栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Python多处理Linux Windows的区别

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python多处理Linux Windows的区别

Windows缺少

fork()
系统调用,该系统调用重复了当前过程。这有很多含义,包括Windows多处理文档页面上列出的含义。进一步来说:

请记住,如果在子进程中运行的代码尝试访问全局变量,则它看到的值(如果有)可能与调用Process.start时父进程中的值不同。

在内部,python通过从头开始一个新进程并告诉它再次加载所有模块,从而在Windows上创建了一个新进程。因此,您在当前流程中所做的任何更改都不会显示。

在您的示例中,这意味着在子进程中,将加载您的模块,但是该

if __name__ =='__main__'
部分将不会运行。因此
T.init
将不会被调用,并且
T.val
将不存在,因此您将看到错误。

另一方面,在POSIX系统(包括Linux)上,流程创建使用fork,所有全局状态都保持不变。该子项带有所有内容的副本,因此它不必重新加载任何内容,并且将看到其副本

T
和的副本
val

这也意味着在POSIX系统上,进程的创建要快得多,资源占用也要少得多,特别是因为“复制”使用写时复制来避免实际复制数据的开销。

使用多重处理时还有其他怪癖,请参阅python多重处理指南中详细说明。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/417234.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号