https://github.com/mit-gfx/diff_stokes_flow
Tip revision: 06c427ae445a42c2af68f712e4ee187753ea2d3c authored by Tao Du on 19 January 2021, 02:50:11 UTC
Added minimum compliance.
Added minimum compliance.
Tip revision: 06c427a
parallel.py
from multiprocessing import Process, Queue
# Input arguments: tasks = [(func, args)].
def parallel_work(tasks, num_workers):
task_queue = Queue()
done_queue = Queue()
num_workers = min(num_workers, len(tasks))
for func, args in tasks:
task_queue.put((func, args))
def worker(input, output):
for func, args in iter(input.get, 'stop'):
result = func(*args)
output.put((args, result))
for _ in range(num_workers):
Process(target=worker, args=(task_queue, done_queue)).start()
for _ in tasks:
_, _ = done_queue.get()
for _ in range(num_workers):
task_queue.put('stop')