为什么在Python中使用带有多处理模块的pool.map时会出现此错误

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

我正在使用 Python 中的多处理模块来并行渲染某些操作。我想要并行化的函数是我在程序中的某个点实例化的类中的一个方法。该函数返回一个名为 History 的类的对象,并且不接受任何参数。

我想在多处理模块中使用 Pool 对象的 map 方法,这样我就可以同时创建许多不同的进程,我创建一个虚拟数字列表作为“输入”,即使该方法不需要它,并使用:

Pool.map(函数,数字)

然而这总是会引发一个问题:历史对象不可调用。 为什么这么说呢?我想返回一组历史对象,为什么它说我正在尝试调用它们?

调用方法的代码:

            p = Pool(process_count)
            numbers = [1] * process_count
            results = p.map(self.function(), numbers)
            p.join()
            p.close()
python python-3.x multiprocessing python-multiprocessing
1个回答
0
投票

Pool.map
是一种在可迭代并行的每个元素上调用提供的函数的方法。当您以
map
作为第一个参数提供
self.function()
时,您并没有给它一个函数,而是给它函数的 result - 在您的情况下为
History
。然后
map
尝试调用
History
导致错误。

© www.soinside.com 2019 - 2024. All rights reserved.