将工作池拆分为不同的多处理函数调用

问题描述 投票:0回答:1

我有 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个工人同时工作。

我希望它是清楚的。谢谢!

python multiprocessing pool
1个回答
0
投票

你应该使用 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
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.