• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

如何在Python中使类成员进程安全

python 来源:Varg Nord 6次浏览

我正在做一些类的任务,它通过迭代器产生多个进程来确保每个入口被处理一次。代码是这样的:如何在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应该就足够了。


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)