[Python] multiprocessing queue | pipe
Marco Giusti
marco.giusti a posteo.de
Gio 21 Maggio 2015 11:10:10 CEST
On Thu, May 21 2015, Remo The Last wrote:
> ciao lista, buongiorno.Sto appresso ad un problema semplice ma che non
> riesco a risolvere.Nell'esempio che segue la def f, con il suo while,
> mi deve inviare sempre i dati aggiornati (q.put) e il q.get nel main
> deve ricevere sempre i dati della def. Il problema è che la def f
> viene eseguita una sola volta e anche se ho inserito un ciclo while i
> dati vengono inviati e ricevuti solo una volta mentre a me serve che i
> dati vengano inviati e ricevuti sempre, in quanto la def dovrà
> aggiornare i dati da inviare.
> Anche se modifico il listato e uso una pipe, la def viene eseguita una
> sola volta e i dati aggiornati vengono ricevuti una sola volta
> Come posso fare?
> Ciao e grazie.py.Re
>
>
>
> Listato esempio:
> from multiprocessing import Process, Queue
> def f(q): while True:
> q.put([42, None, 'hello']) conn.close()
>
> if __name__ == '__main__':
> q = Queue()
> p = Process(target=f, args=(q,))
> p.start()
> print q.get()
> p.join()
E se raddoppi la `get()`, quante volte viene ricevi i dati?
from multiprocessing import Process, Queue
def f(q):
while True:
q.put([42, None, 'hello'])
if __name__ == '__main__':
q = Queue()
p = Process(target=f, args=(q,))
p.start()
print q.get()
print q.get() # <--
p.join()
ciao
m.
Maggiori informazioni sulla lista
Python