ashboy64已经问过这个问题,但没有回答。
所以基本上,我想在导入的自编写模块中启动一个过程。 该模块是单个类,具有该类使用的一些其他功能。该类“启动”一个过程以同时完成一些工作,如上所述,这是行不通的。
Python吐出这样的文字:由于我没有使用fork
(我使用spawn
(默认值)来启动我的进程,因此我必须使用__name__ == "__main__"
“主模块”。但这不是我的主要模块,所以我应该怎么做?
这是我第一次使用multiprocesses
,而在我通读docs来寻找答案时,我不明白为什么下面的代码行不通。
from multiprocessing import Process
def foo():
print('hello')
p = Process(target=foo)
p.start()
那是因为新进程正在执行主模块中的所有代码吗?如果是这样,为什么在我的情况下适用,因为我的情况下没有“直接”可执行代码(没有在类或函数之外的代码)?
但是无论如何,我的主要问题是如何在导入的模块中启动进程。
谢谢!
编辑
我想出了使它工作的方法...
我不知道为什么,但是当您只是将main
模块的多余点放在if语句中时...
if __name__ == __main__:
main()
...有效。
不知道为什么会这样,因为注意到那里会启动一个过程,而我不必在启动过程的导入模块中放入if
语句。