我的任务是将一些可以在Linux上完美运行的Python代码移植到Windows。不幸的是,代码因错误而失败:
已尝试在当前版本之前启动新进程 进程已完成其引导阶段。
从我一直在阅读的内容来看,这完全是由于Windows不使用fork,而是使用spawn创建新线程。
这是我要发布代码的地方,但是也有一个问题,其中有很多。一个文件导入另一个文件,另一个文件导入另一个文件,该文件启动线程,另一个文件又产生一个新线程。
因此,根据我一直在阅读的内容,只需使用if __name__ == '__main__':
保护器来防止产生无限循环的线程,但我不知道将其放置在何处。
我运行的python文件已经有了这个位置,但是线程是从其他类的其他方法中产生的,所以我还需要将其放入这些类中吗?
似乎撰写此文件的任何人都使用了全局文件,该文件被导入到每个单独的python文件中,然后依次导入其他Python文件。很抱歉没有提供任何代码,但我什至不知道从哪里开始。
任何意见或建议都将不胜感激。
只是为了消除任何潜在的混乱,看来这段代码使用的是进程,而不是线程。所以有类似
的代码import multiprocessing as mp
....
manager = mp.Manager()
...
process = mp.Process(blah)
process.start()
process.join()
....
process.terminate()
要添加更多信息,请在进行一些细微更改后运行该程序。它使用Flask提供了一个REST API,该API会在收到各种HTTP请求时运行功能。
当前在调用
时抛出此异常manager = mp.Manager()
此行是在其他每个python文件中使用的global.py文件的一部分。
好的,经过一些修改,我现在已经解决了这个问题,然后转到另一个问题!现在,过程开始了,但是当从另一个类导入时,变量不可用
global.py
if __name__ == '__main__':
thingy = manager.dict()
handler.py
from global import *
if thingy['status'] == 'working':
**NameError: name 'thingy' is not defined**