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

Python多重处理模块的.join()方法到底在做什么?

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

Python多重处理模块的.join()方法到底在做什么?

join()
threading
或一起使用时,该方法
multiprocessing
与之无关
str.join()
-实际上没有将任何东西串联在一起。相反,它仅表示“等待此[线程/进程]完成”。
join
之所以使用该名称,是因为该
multiprocessing
模块的API看起来类似于该
threading
模块的API,并且该
threading
模块
join
用于其
Thread
对象。
join
在许多编程语言中,使用该术语表示“等待线程完成”是很常见的,因此Python也采用了它。

现在,您看到有和没有调用都延迟20秒的原因

join()
是因为默认情况下,当主进程准备退出时,它将隐式调用
join()
所有正在运行的
multiprocessing.Process
实例。在
multiprocessing
文档中并未对此进行明确说明,但在“编程指南”部分中进行了提及:

还请记住,非守护进程将自动加入。

您可以通过设置覆盖此行为

daemon
上的标志
Process
True
之前,要启动的过程:

p = Process(target=say_hello)p.daemon = Truep.start()# Both parent and child will exit here, since the main process has completed.

如果这样做,则子进程将在主进程完成后立即终止:

守护程序

进程的守护程序标志,一个布尔值。必须在调用start()之前进行设置。

初始值是从创建过程继承的。

进程退出时,它将尝试终止其所有守护程序子进程。



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

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

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