py多进程中的全局变量
引用自知乎
Windows下面的multiprocessing跟Linux下面略有不同,Linux下面基于fork,fork之后所有的本地变量都复制一份,因此可以使用任意的全局变量;在Windows下面,多进程是通过启动新进程完成的,所有的全局变量都是重新初始化的,在运行过程中动态生成、修改过的全局变量是不能使用的。”这一段太有用了,顺序执行好好的,到了并行,修改过得全局变量全变了,搞死了
如果我现在需要使用一个全局的类的实例,则必须把他放在受保护的区域,否则开启新进程时对象会重新被实例化。
这就有一个矛盾,如果不放在受保护区域就会被重新实例化,否则就达不到全局的效果(新开辟的进程必须要能访问你定义的函数)。
所以最好不要用全局变量(对象)。如果非要用的话可以参考我现在的做法,把它在模块中实例化,模块是不会被重复导入的。
署名-非商业性使用本文采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ZEKALRYN'S BLOG!
评论
