forked from goodboy/tractor
				
			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