/ / Vytvorenie objektu Queue.Queue v konštruktore procesu - python, multiprocessing

Vytvorenie objektu Queue.Queue v konštrukcii procesu - python, multiprocessing

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ď č. 1

Pokiaľ 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ú?