Add `open_actor_cluster()` eg. to readme
parent
74f460eba7
commit
94a6fefede
|
@ -313,9 +313,69 @@ real time::
|
||||||
This uses no extra threads, fancy semaphores or futures; all we need
|
This uses no extra threads, fancy semaphores or futures; all we need
|
||||||
is ``tractor``'s IPC!
|
is ``tractor``'s IPC!
|
||||||
|
|
||||||
|
To be extra terse the ``tractor`` devs have started hacking some "higher
|
||||||
|
level" APIs for managing actor trees/clusters. These interfaces should
|
||||||
|
generally be condsidered provisional for now but we encourage you to try
|
||||||
|
them and provide feedback. Here's a new API that let's you quickly
|
||||||
|
spawn a flat cluster:
|
||||||
|
|
||||||
|
.. code:: python
|
||||||
|
|
||||||
|
from functools import partial
|
||||||
|
|
||||||
|
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():
|
||||||
|
n.start_soon(
|
||||||
|
partial(
|
||||||
|
portal.run,
|
||||||
|
sleepy_jane,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
await trio.sleep(0.5)
|
||||||
|
|
||||||
|
# kill the cluster with a cancel
|
||||||
|
raise KeyboardInterrupt
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
try:
|
||||||
|
trio.run(main)
|
||||||
|
except KeyboardInterrupt:
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
.. _full worker pool re-implementation: https://github.com/goodboy/tractor/blob/master/examples/parallelism/concurrent_actors_primes.py
|
.. _full worker pool re-implementation: https://github.com/goodboy/tractor/blob/master/examples/parallelism/concurrent_actors_primes.py
|
||||||
|
|
||||||
|
|
||||||
Install
|
Install
|
||||||
-------
|
-------
|
||||||
From PyPi::
|
From PyPi::
|
||||||
|
|
Loading…
Reference in New Issue