example - python multiprocessing windows
¿Cómo usar la cola de multiprocesamiento en Python? (2)
Me cuesta mucho entender cómo funciona la cola de multiprocesamiento en python y cómo implementarla. Digamos que tengo dos módulos de Python que acceden a los datos desde un archivo compartido, llamemos a estos dos módulos un escritor y un lector. Mi plan es que tanto el lector como el escritor pongan las solicitudes en dos colas de multiprocesamiento separadas, y luego hagan que un tercer proceso haga aparecer estas solicitudes en un bucle y se ejecuten como tales.
Mi problema principal es que realmente no sé cómo implementar multiprocessing.queue correctamente, realmente no puede crear una instancia del objeto para cada proceso, ya que serán colas separadas. ¿Cómo se asegura de que todos los procesos se relacionen con una cola compartida? en este caso, colas)
Mi problema principal es que realmente no sé cómo implementar multiprocessing.queue correctamente, realmente no puede crear una instancia del objeto para cada proceso, ya que serán colas separadas. ¿Cómo se asegura de que todos los procesos se relacionen con una cola compartida? en este caso, colas)
Este es un ejemplo simple de un lector y escritor que comparte una sola cola ... El escritor envía un grupo de enteros al lector; cuando el escritor se queda sin números, envía "DONE", que le permite al lector saber salir del bucle de lectura.
from multiprocessing import Process, Queue
import time
import sys
def reader_proc(queue):
## Read from the queue; this will be spawned as a separate Process
while True:
msg = queue.get() # Read from the queue and do nothing
if (msg == ''DONE''):
break
def writer(count, queue):
## Write to the queue
for ii in range(0, count):
queue.put(ii) # Write ''count'' numbers into the queue
queue.put(''DONE'')
if __name__==''__main__'':
pqueue = Queue() # writer() writes to pqueue from _this_ process
for count in [10**4, 10**5, 10**6]:
### reader_proc() reads from pqueue as a separate process
reader_p = Process(target=reader_proc, args=((pqueue),))
reader_p.daemon = True
reader_p.start() # Launch reader_proc() as a separate python process
_start = time.time()
writer(count, pqueue) # Send a lot of stuff to reader()
reader_p.join() # Wait for the reader to finish
print("Sending {0} numbers to Queue() took {1} seconds".format(count,
(time.time() - _start)))
en "desde la cola de importación Cola" no hay un módulo llamado cola, en su lugar se debe utilizar el multiprocesamiento. Por lo tanto, debe verse como "desde la cola de importación de multiprocesamiento"