Ich mache einige Aufgaben in einer Klasse, die mehrere Prozesse über einen Iterator erzeugt, um zu gewährleisten, dass jeder Eintrag einmal verarbeitet wird. Der Code ist wie:So machen Sie den Klassen-Member-Prozess in Python sicher
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
Aber es scheint, dass alle subprocess bei iterator = 0 beginnt und ihre eigenen Loops zu tun. Ich weiß, dass es möglich ist, sie mit einem Queue()
Objekt zu synchronisieren, aber was ist, wenn wir es nicht benutzen?