[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