Python 巨蟒:“;int不可调用“;使用池进行多处理
我在对池进行多处理时遇到了一个错误(pop索引超出范围),当我试图简化代码以将其发布到此处时,我遇到了另一个错误,因此有点令人费解,请参见此处的代码: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
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
作为回调函数,这显然不起作用