/ / Creazione di un oggetto Queue.Queue nel costrutto di un processo: python, multiprocessing

Creazione di un oggetto Queue.Queue nel costrutto di un processo: python, multiprocessing

Ho ragione nel dire che quanto segue è sbagliato:

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)

dal momento che sto creando la coda in un mainprocesso invece che nel processo di tipo P. Cosa può andare storto se creo la coda in un processo e la utilizzo in un altro, come sto facendo sopra? Nota che non voglio usare self.queue tra i processi, ho appena commesso l'errore di crearlo nel costruttore.

La mia comprensione è che se volessi usare una coda tra i processi, allora si dovrebbe usare il multiprocessing.Queue.

risposte:

1 per risposta № 1

Finché non si tenta di utilizzare la coda da entrambi i processi, la solita coda dovrebbe funzionare correttamente. In alcuni casi, la coda potrebbe lasciare una copia ad ogni processo, ma non è la stessa cosa.

E sì, dovresti usare multiprocessing.Queue se la coda deve essere utilizzata da entrambi i thread.

coda python e coda multiprocessing: come si comportano?