Ending data exchange through multiprocessing pipe

Michal Chruszcz mchruszcz at gmail.com
Thu Apr 23 04:21:54 EDT 2009


On Apr 22, 6:33 pm, MRAB <goo... at mrabarnett.plus.com> wrote:
> You could do this:
>
>      from multiprocessing.queues import Empty
>
>      queue = Queue()
>      Process(target=f, args=(queue,)).start()
>      while active_children():
>          try:
>              print queue.get(timeout=1)
>          except Empty:
>              pass

This one isn't generic. When I have tasks that all finish within 0.1
seconds the above gives 10x overhead. On the other hand, if I know the
results will be available after 10 hours there's no use in checking
every second.

Best regards,
Michal Chruszcz



More information about the Python-list mailing list