Согласно docs многопроцесса python, нереста процесса должна находиться внутри предложения if __name__ == '__main__':
, чтобы предотвратить нереста бесконечных процессов.Использование многопроцесса python за пределами основного сценария
Мой вопрос, можно ли использовать многопроцессор внутри импорта?
Что-то вдоль этих линий этого: скажем, у меня есть этот ру, которая является основной исполняемый файл:
import foo
def main():
foo.run_multiprocess()
if __name__ =='__main__':
main()
и файл foo.py который импортируется:
def run_multiprocess(number_to_check):
if number_to_check == 5:
print(number_to_check)
if __name__ == '__main__':
list_to_check = {1,2,3,4,5,6,7}
pool = Pool(processes=4)
pool.map(process_image, list_to_check)
Obviusly это не сработает, потому что код внутри файла if в foo.py не будет запущен. Есть ли способ заставить его работать?
Насколько я понимаю, когда вы будете «из m1 import f2», он создаст новый процесс. В окнах он * скопирует все * поля исходного процесса в новый процесс. При создании нового процесса он также снова выполнит строку «from m1 import f2» и потому, что она не находится в предложении «__main__», она будет создавать * новый процесс снова и снова и снова – Curtwagner1984