Найти - Пользователи
Полная версия: [РЕШЕНО] multiprocessing Queue бредит
Начало » Python для новичков » [РЕШЕНО] multiprocessing Queue бредит
1
Galvanize
Всем привет.
Имеется скрипт, с мультипроцессингом и очередями. Проблема довольно таки странная. Вчера код работал. После перезагрузки компьютера перестал. Начал копать в чем трабл, и выяснилось вот что.
Имеется участок вида:

from multiprocessing import Process, Queue
q_data = Queue()
def Worker():
    while not q_data.empty():
        #some code
        print q_data.get()
if __name__ == '__main__':
    for i in xrange(5):
        q_data.put(i)
    procs = []
    for i in xrange(5):
        p = Process(target=Worker)
        p.start
        procs.append(p)
   for p in procs:
       p.join()

Код должен напечать 1,2,3,4,5, по каждой циферке из процесса, но в Woker условие while не проходит, т.к. мне выдает, что очереди пустые. Даже с запуском одного процесса такая же шляпа. И самое интересное, что в “main” очередь не пуста.
В чем может быть проблема?
pyuser
Galvanize
т.к. мне выдает, что очереди пустые
И это не удивительно. В каждом запущенном процессе Ваша очередь переопределяется. Чтобы процессы работали с одной очередью, ее нужно передавать как параметр.
def worker(queue):
    ...
def main():
    queue = Queue()
    ...
    for i in range(5):
        p = Process(target=worker, args=(queue,))
        p.start()
        ...
plusplus
Может кому полезным будет: https://medium.com/p/40e9b2b36148
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB