Tentacule is an uncomplicated library to deal with a pool of worker processes
pip install tentacule
- Create a pool and start it
- Send a new task to it
- Fetch the task result
pool = ProcessPool(workers=3)
pool.start()
def task(arg: int):
return 2 + arg
task_id = pool.submit(task, 3)
result = pool.fetch(task_id) # 5
pool.close()
You can also do this in a single step:
pool = ProcessPool(workers=3)
pool.start()
def task(arg: int):
return 2 + arg
result = pool.submit_and_fetch(task, 5) # 7
pool.close()
It is possible to stream a generator from a process:
pool = ProcessPool(workers=3)
pool.start()
def task(max: int = 10):
for i in range(max):
yield i
for result in pool.submit_and_stream(task):
print(result) # Will print 0 through 9 inclusively
pool.close()
- Anything dill can't pickle, can't be used as a task.
- Arguments are pickled using the regular pickling for processes.