2021-11-02 19:37:36 +00:00
|
|
|
|
|
|
|
import trio
|
|
|
|
import tractor
|
|
|
|
|
|
|
|
|
|
|
|
async def sleepy_jane():
|
|
|
|
uid = tractor.current_actor().uid
|
|
|
|
print(f'Yo i am actor {uid}')
|
|
|
|
await trio.sleep_forever()
|
|
|
|
|
|
|
|
|
|
|
|
async def main():
|
|
|
|
'''
|
|
|
|
Spawn a flat actor cluster, with one process per
|
|
|
|
detected core.
|
|
|
|
|
|
|
|
'''
|
|
|
|
portal_map: dict[str, tractor.Portal]
|
|
|
|
results: dict[str, str]
|
|
|
|
|
|
|
|
# look at this hip new syntax!
|
|
|
|
async with (
|
|
|
|
|
|
|
|
tractor.open_actor_cluster(
|
|
|
|
modules=[__name__]
|
|
|
|
) as portal_map,
|
|
|
|
|
|
|
|
trio.open_nursery() as n,
|
|
|
|
):
|
|
|
|
|
|
|
|
for (name, portal) in portal_map.items():
|
2021-11-04 14:41:25 +00:00
|
|
|
n.start_soon(portal.run, sleepy_jane)
|
2021-11-02 19:37:36 +00:00
|
|
|
|
|
|
|
await trio.sleep(0.5)
|
|
|
|
|
|
|
|
# kill the cluster with a cancel
|
|
|
|
raise KeyboardInterrupt
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
try:
|
|
|
|
trio.run(main)
|
|
|
|
except KeyboardInterrupt:
|
|
|
|
pass
|