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 № 1Finché 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?