【发布时间】:2023-02-22 12:44:03
【问题描述】:
我提出了一个简单的玩具问题,但潜在的问题是如何在 Python 的多处理池中使用类方法?
class Var:
def __init__(self,val):
self.val = val
def increment(self):
self.val +=1
arr = [Var(1) for i in range(1000)]
def func(x):
x.increment()
with Pool() as pool:
results = pool.map(func, arr)
返回的结果是一组None 值。我希望这是因为 func 没有返回任何内容。但是,arr[0] 仍然设置为 1。它没有递增。当然,我可以让方法返回新值。但这不是我正在寻找的解决方案。应该更新对象。
归根结底,我需要并行处理对象。有没有其他方法可以在 Python 中完成?
【问题讨论】:
-
当然,多处理使用多进程.进程不共享状态。这就像您打开终端并输入命令
python myscript.py,然后打开另一个终端并输入另一个python myscript.py。 -
请注意,Python 中的一切都是对象,因此您始终在多处理中使用对象。这与 OOP 或类定义或类似的东西无关。
-
@juanpa.arrivillaga,有道理——你对更新对象有什么建议?
标签: python oop multiprocessing