Я пытаюсь обрабатывать некоторые данные параллельно, используя модуль multiprocessing . Все отлично работает, когда у меня был весь код в одном файле. Я решил разделить код на отдельные файлы (все в одном каталоге), но многопроцессорная обработка больше не работает. Не могли бы вы мне помочь?
Это минимальный рабочий пример. Весь код находится в одном файле.
foo.py
from multiprocessing import Process, Queue
def process_data( q, msg1, msg2 ):
q.put( [ msg1, msg2 ] )
if __name__ == '__main__':
q = Queue()
p = Process( target=bar.run, args=( q, "Hello", "World" ) )
p.start()
result = q.get()
print( result )
p.join()
Вот пример нерабочий . Функция process_data теперь находится в другом файле (bar.py), и кажется, что result = q.get()
никогда не вернется! Оба файла находятся в одном каталоге:
bar.py:
def process_data( msg1, msg2 ):
q.put( [msg1, msg2 ] )
foo.py:
from multiprocessing import Process, Queue
import bar
if __name__ == '__main__':
q = Queue()
p = Process( target=bar.process_data, args=( q, "Hello", "World" ) )
p.start()
result = q.get()
print( result )
p.join()