首页 > 解决方案 > Python多处理apply_async:不能将列表列表作为参数传递?

问题描述

我正在尝试在 Python 中使用多处理。以下代码

import numpy as np
import multiprocessing as mp

def foo(g):
    for i in g:
        print(i)

bubbles = [[1, 1], [2, 3], [6, 5]]
bubblesParts = np.array_split(bubbles, 2)

for part in bubblesParts:
    foo(part)

if __name__ == '__main__':
    with mp.Pool(mp.cpu_count()) as p:
        for part in bubblesParts:
            print(part)
            p.apply_async(foo, args=(part)).get()

正在给我TypeError: foo() takes 1 positional argument but 2 were given

起初我以为是因为我不能使用列表列表作为参数,但第一个 for 循环告诉我我可以。

apply_async 函数是否以某种方式试图解包作为 foo 的参数传递的列表部分?或者还有什么问题?

标签: pythonmultiprocessingarguments

解决方案


推荐阅读