lock example ejemplos python multithreading multiprocessing

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"