簡體   English   中英

如何在Python中使類成員進程安全

[英]How to make class member process safe in 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

但是似乎所有子進程都從iterator = 0開始並執行自己的循環。 我知道可以將它們與Queue()對象同步,但是如果我們不使用它怎么辦?

進程之間不共享內存。 因此,應用於過程內變量的更改將不會傳播到同級。

要在Python中的各個進程之間共享變量,您可以看一下多處理模塊提供的原語。 在您的特定情況下, 共享值就足夠了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM