У меня есть модуль с именем control.py, в котором я использую следующий сокращенный код:
def parallel_execution():
if __name__=="__main__":
process=multiprocessing.Process(target=worker_function) ##the worker_function has been defined appropriately
process.start()
process.join()
return
def main(main_args):
if multiprocessing_flag == True:
parallel_execution()
if __name__=='__main__':
main(sys.argv[1:])
У меня есть еще один модуль с именем Calling.py, из которого я sh выполняю определенные функции многопроцессорной обработки. в parallel_execution (). Проблема в том, что если я использую блок (if __name__=='__main__' )
, я не могу вызвать control.py из другого скрипта. Если я все еще использую runpy.run_module("control",run_name='__main__')
, я получаю сообщение об ошибке, что worker_function не может быть обработан.
Как мне вызвать control.py, чтобы запустить функцию parallel_execution? Другими словами, есть ли способ запретить моему родительскому процессу бесконечно порождать дочерние процессы без использования if __name__=='__main__'
, чтобы я все еще мог вызывать control.py из Calling.py?