Windows上的python多处理,如果__name__ ==“__ main__”
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Windows上的python多处理,如果__name__ ==“__ main__”,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1209字,纯文字阅读大概需要2分钟。
内容图文
![Windows上的python多处理,如果__name__ ==“__ main__”](/upload/InfoBanner/zyjiaocheng/952/6fc3f5cef95949e7b36f48ba57a1a585.jpg)
在Windows 7(64位)上运行python 2.7.
在阅读库模块多处理的文档时,它会多次声明__main__模块的重要性,包括条件(特别是在Windows中):
if __name__ == "__main__":
# create Process() here
我的理解是,你不想在模块的全局命名空间中创建Process()实例(因为当子进程导入模块时,他会无意中产生另一个).
我不必将流程管理器放在我的包执行层次结构的最顶层(在PARENT中执行).只要我的Process()在类方法中创建,管理和终止,甚至在函数闭包中.只是不在顶级模块命名空间中.
我是否正确理解了此警告/要求?
编辑
在前两个回复之后,我添加了这个引用.这是2.7文档中第16.6节多处理的介绍.
Note: Functionality within this package requires that the
__main__
module be importable by the children. This is covered in Programming
guidelines however it is worth pointing out here.This means that some
examples, such as themultiprocessing.Pool
examples will not work in
the interactive interpreter…
解决方法:
您不必从模块的“顶层”调用Process().
从类方法调用Process是完全正确的.
唯一需要注意的是,如果导入模块,则不能允许调用Process().
由于Windows没有fork,因此多处理模块启动一个新的Python进程并导入调用模块.如果在导入时调用Process(),则会引发无限连续的新进程(或直到您的机器耗尽资源).这就是隐藏对Process()内部调用的原因
if __name__ == "__main__"
因为在导入时不会调用此if语句中的语句.
内容总结
以上是互联网集市为您收集整理的Windows上的python多处理,如果__name__ ==“__ main__”全部内容,希望文章能够帮你解决Windows上的python多处理,如果__name__ ==“__ main__”所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。