44 lines
759 B
Python
44 lines
759 B
Python
"""
|
|
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():
|
|
|
|
pid = os.getpid()
|
|
|
|
# burn a core @ ~ 50kHz
|
|
for _ in range(50000):
|
|
await trio.sleep(1/50000/50)
|
|
|
|
return os.getpid()
|
|
|
|
|
|
async def main():
|
|
|
|
async with tractor.open_nursery() as n:
|
|
|
|
portal = await n.run_in_actor(burn_cpu)
|
|
|
|
# burn rubber in the parent too
|
|
await burn_cpu()
|
|
|
|
# wait on result from target function
|
|
pid = await portal.result()
|
|
|
|
# end of nursery block
|
|
print(f"Collected subproc {pid}")
|
|
|
|
|
|
if __name__ == '__main__':
|
|
trio.run(main)
|