我有 4 个函数想要使用多重处理,这四个函数中的每一个都必须迭代 3 个不同的输入集。我的计算机有 8 个核心,因此我想要有 8 个池工作人员,但为此工作人员必须同时调用不同的函数,这是我的代码
with Pool() as pool:
u1, u2, u3 = pool.starmap(velo,Gamma_velo)
ux, uy, uz = zip(*pool.starmap(velo_grad,Gamma_velo_grad))
omega1, omega2, omega3 = pool.map(vort,Gamma_vort)
omegax, omegaz, omegay = zip(*pool.map(vort_grad,Gamma_vort))`
但是我只能让3个工人同时工作。
我希望它是清楚的。谢谢!
你应该使用 Pool.apply_async
import multiprocessing
import time
def foo(x):
time.sleep(1)
print(f"foo'd with {x}")
def bar(x,y):
print(f"bar'd with {x},{y}")
if __name__ == "__main__":
tasks = []
with multiprocessing.Pool(2) as pool:
tasks.append(pool.apply_async(foo,(1,)))
tasks.append(pool.apply_async(bar,(1,2)))
for task in tasks:
task.get()
bar'd with 1,2
foo'd with 1