""" Run with a process monitor from a terminal using:: $TERM -e watch -n 0.1 "pstree -a $$" \ & python examples/parallelism/single_func.py \ && kill $! """ import os import tractor import trio async def burn_cpu() -> int: pid = os.getpid() # burn a core @ ~ 50kHz for _ in range(50000): await trio.sleep(1/50000/50) return os.getpid() async def main() -> None: n: tractor.ActorNursery async with tractor.open_nursery() as n: portal: tractor.Portal = await n.run_in_actor(burn_cpu) # burn rubber in the parent too await burn_cpu() # wait on result from target function pid: int = await portal.wait_for_result() # end of nursery block print(f"Collected subproc {pid}") if __name__ == '__main__': trio.run(main)