Mám pravdu, keď hovorím, že nasledujúce je nesprávne:
import Queue
import multiprocessing
class P(multiprocessing.Process):
def __init__(self, spy):
super(P, self).__init__()
self.queue = Queue.Queue()
def run(self):
self.queue.put(1)
pretože vytváram frontu v hlavnomproces namiesto procesu typu P. Čo sa môže pokaziť, ak vytvorím front v jednom procese a použijem ho v inom, ako to robím vyššie? Všimnite si, že nechcem používať self.queue medzi procesmi, urobil som chybu, že som ho vytvoril v konštruktori.
Moje pochopenie je, že ak by som chcel použiť frontu medzi procesmi, potom by sa namiesto toho malo použiť multiprocesovanie.
odpovede:
1 pre odpoveď č. 1Pokiaľ sa nepokúšate použiť frontu z oboch procesov, obvyklý front by mal fungovať správne. Fronta môže v niektorých prípadoch ponechať kópiu pri každom procese, ale nie sú rovnaké.
A áno, mali by ste použiť multiprocessing.Queue, ak má frontu používať obidva vlákna.
python front a multiprocessing queue: ako sa správajú?