在导入的模块中启动流程

时间:2018-12-11 21:41:05

标签: python-3.x process multiprocessing main

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语句。

0 个答案:

没有答案