gpt4 book ai didi

python - 加入和终止之间的区别

转载 作者:行者123 更新时间:2023-12-02 01:52:28 25 4
gpt4 key购买 nike

请看下面的代码:

from multiprocessing import Process

def f(name):
print 'hello', name

if __name__ == '__main__':
p = Process(target=f, args=('bob',))
p.start()
p.join()

您将看到函数调用 startjoin 已在此处调用。事实上,它们总是在 python documentation 中的multiprocessing 模块的示例中被调用。 .

现在为什么调用 start 的原因是相当明显的,因为它启动了进程。但是,join 与完全结束该过程不同,如文档中所述:

Block the calling thread until the process whose join() method is called terminates or until the optional timeout occurs.

因此,根据我的理解,join() 用于终止进程。那么为什么文档的示例中没有使用 terminate() 函数或 TerminateProcess() 呢?

因此,这给我们带来了主要问题,jointerminate 之间有什么区别?理想情况下,join 的目的是什么以及terminate 的目的是什么?因为根据示例,它们似乎都能够做同样的事情(如果我弄错了,请纠正我)。

到目前为止我发现,这可能是因为 Windows 和 Linux 的 terminate 是不同的,因为 Windows 有不同的终止函数。我们也将不胜感激您选择的更多理由。

最佳答案

join用于等待进程,不主动终止进程,而terminate用于杀死进程。

尝试以下示例(带/不带 p.terminate()):

from multiprocessing import Process
import time

def f(name):
time.sleep(1)
print 'hello', name

if __name__ == '__main__':
p = Process(target=f, args=('bob',))
p.start()
p.terminate() # <---
p.join()

使用终止,您不会得到任何输出。

关于python - 加入和终止之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19699802/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com