Python 巨蟒:“;int不可调用“;使用池进行多处理

Python 巨蟒:“;int不可调用“;使用池进行多处理,python,python-multiprocessing,pool,Python,Python Multiprocessing,Pool,我在对池进行多处理时遇到了一个错误(pop索引超出范围),当我试图简化代码以将其发布到此处时,我遇到了另一个错误,因此有点令人费解,请参见此处的代码: def some_function(a, b): return a*b neigbhourhood = [[object() for _ in range(3)] for _ in range(3)] result = [[object() for _ in range(3)] for _ in range(3)] pool = Poo

我在对池进行多处理时遇到了一个错误(pop索引超出范围),当我试图简化代码以将其发布到此处时,我遇到了另一个错误,因此有点令人费解,请参见此处的代码:

def some_function(a, b):
    return a*b

neigbhourhood = [[object() for _ in range(3)] for _ in range(3)]
result = [[object() for _ in range(3)] for _ in range(3)]
pool = Pool()
for i in range(0, 3):
    for j in range(0, 3):
        neigbhourhood[i][j] = pool.apply_async(some_function(i, j))

for k in range(0, 3):
    for l in range(0, 3):
        result[k][l] = neigbhourhood[k][l].get()
pool.close()
回溯是关于在第34行(带有get的行)不可调用的int对象


编辑:好的,这只是池参数中的一个键入错误。apply_async,现在它正在工作,但我的真实代码仍然随机崩溃,当我简化代码时,我不能重复错误,我不明白。问题在于调用
apply_async
的方式。它要求您传递一个函数回调和将传递给所提供函数的参数

pool.apply.async(some_function, [x, y])

请提供完整的回溯。问题似乎不是由“带有
get
的行”引起的,而是您将函数结果传递到
池。应用异步
<代码>某些函数(i,j)已经计算了结果,您要做的是将函数作为第一个参数传递,并将函数参数作为元组传递,即
池。apply_async(某些函数,(i,j))
。它不返回ApplyResult对象(我用get()在int中进行转换)吗?我该怎么办?@RaphaelTodo
在调用
apply\u async
之前,某些函数会生成一个结果。因此,您将实际提供一个
int
作为回调函数,这显然不起作用