如何在Python中使类成员进程安全
我正在做一些类的任务,它通过迭代器产生多个进程来确保每个入口被处理一次。代码是这样的:如何在Python中使类成员进程安全
import multiprocessing as mp Class MyClass():
def __init__():
self.index=[blabla]
self.iterator=0
self.workers=[mp.Process(target=self.worker, args=(self.lock, args) for i in range(10)]
def worker(self, lock, args):
# I intend to use lock to make only one subprocs read index
# list until iterator goes to next
while some_condition:
lock.acquire()
now_item=self.index[self.iterator]
self._next_iter()
lock.release()
...# do something on now_item
def._next_iter(self):
#do some checks and +1 on iterator
但似乎所有的子进程开始在迭代器= 0,并做自己的循环。 我知道可以将它们与Queue()
对象同步,但如果我们不使用它,该怎么办?
回答:
进程之间不共享内存。因此,应用于流程内变量的更改不会传播给兄弟。
要在Python中的进程间共享变量,您可以看看multiprocessing模块提供的基元。在你的具体情况下,shared value应该就足够了。
以上是 如何在Python中使类成员进程安全 的全部内容, 来源链接: utcz.com/qa/260824.html