Я играю с библиотекой для своих учеников-новичков, и я использую модуль многопроцессорности в Python. Я столкнулся с этой проблемой: импорт и использование модуля, который использует многопроцессорность, не вызывая бесконечного цикла в Windows
В качестве примера предположим, что у меня есть модуль mylibrary.py
:
# mylibrary.py
from multiprocessing import Process
class MyProcess(Process):
def run(self):
print "Hello from the new process"
def foo():
p = MyProcess()
p.start()
И основная программа, которая вызывает эту библиотеку:
# main.py
import mylibrary
mylibrary.foo()
Если я запустил main.py
в Windows, он попытается импортировать main.py в новый процесс, что означает, что код выполняется снова, что приводит к бесконечному циклу генерации процесса. Я могу исправить это так:
import mylibrary
if __name__ == "__main__":
mylibrary.foo()
Но это довольно запутанно для новичков, и, более того, похоже, что это не обязательно. Новый процесс создается в mylibrary
, поэтому почему новый процесс просто не импортирует mylibrary
? Есть ли способ обойти эту проблему, не main.py
?
Кстати, я использую Python 2.7.