Python中,如何区分进程的join和is_alive方法?

2026-05-21 18:462阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计681个文字,预计阅读时间需要3分钟。

Python中,如何区分进程的join和is_alive方法?

使用`join()`方法启动一个子进程,父进程将等待子进程结束。`join()`使得主进程暂停,直到子进程执行完毕。现象:主进程执行到此处,会阻塞等待子进程执行完毕。”

join 方法

开启一个正常的子进程,父进程会等待子进程结束后,父进程(程序)才结束。join()是让主进程等待子进程执行完。 现象:主进程执行到这句话,主进程阻塞住,等待子进程执行

如何把父进程和子进程之间的关系变为同步或者异步?父进程执行join,就会变成同步,不执行join,父进程和子进程就是异步的关系

join必须放在start()后边

没有join

from multiprocessing import Process
from time import sleep


def func():
sleep(6)
print('这是儿子。。。')


if __name__ == '__main__':
p = Process(target=func)
p.start()
sleep(5)
print('这是老子。。。')

结果:

这是老子。。。
这是儿子。。。

等5s执行这是老子。。。,在等1s执行这是儿子。。。

有join

from multiprocessing import Process
from time import sleep


def func():
sleep(6)
print('这是儿子。。。')


if __name__ == '__main__':
p = Process(target=func)
p.start()
p.join() # 等待子进程执行完在往下执行
sleep(5)
print('这是老子。。。')

结果:

这是儿子。。。
这是老子。。。

等6s执行这是儿子。。。,在等5s执行这是老子。。。

is_alive 方法

返回一个bool值,如果返回True,代表进程还活着,如果返回False,代表子进程死了

p.is_alive() 判断p进程是否还活着

p.terminate() 杀死p进程

from multiprocessing import Process
import time


def func():
time.sleep(1)
print(123)


if __name__ == '__main__':
p = Process(target=func, )
p.start()
p.terminate() # 杀死p进程,让解释器告诉操作系统,请杀掉p进程。
print('子进程是否还活着?', p.is_alive())
time.sleep(0.002)
print('子进程是否还活着?', p.is_alive())

结果:

子进程是否还活着? True
子进程是否还活着? Falsefrom multiprocessing import Process
import time


def func():
time.sleep(1)
print('子进程')


if __name__ == '__main__':
p = Process(target=func, )
p.start() # p.is_alive()放在start前面都是false,因为还没启动
print(p.is_alive())
p.join()
print(p.is_alive()) # 子进程已经运行结束了
print('主进程结束了')

结果:

True
子进程
False
主进程结束了



Python中,如何区分进程的join和is_alive方法?

本文共计681个文字,预计阅读时间需要3分钟。

Python中,如何区分进程的join和is_alive方法?

使用`join()`方法启动一个子进程,父进程将等待子进程结束。`join()`使得主进程暂停,直到子进程执行完毕。现象:主进程执行到此处,会阻塞等待子进程执行完毕。”

join 方法

开启一个正常的子进程,父进程会等待子进程结束后,父进程(程序)才结束。join()是让主进程等待子进程执行完。 现象:主进程执行到这句话,主进程阻塞住,等待子进程执行

如何把父进程和子进程之间的关系变为同步或者异步?父进程执行join,就会变成同步,不执行join,父进程和子进程就是异步的关系

join必须放在start()后边

没有join

from multiprocessing import Process
from time import sleep


def func():
sleep(6)
print('这是儿子。。。')


if __name__ == '__main__':
p = Process(target=func)
p.start()
sleep(5)
print('这是老子。。。')

结果:

这是老子。。。
这是儿子。。。

等5s执行这是老子。。。,在等1s执行这是儿子。。。

有join

from multiprocessing import Process
from time import sleep


def func():
sleep(6)
print('这是儿子。。。')


if __name__ == '__main__':
p = Process(target=func)
p.start()
p.join() # 等待子进程执行完在往下执行
sleep(5)
print('这是老子。。。')

结果:

这是儿子。。。
这是老子。。。

等6s执行这是儿子。。。,在等5s执行这是老子。。。

is_alive 方法

返回一个bool值,如果返回True,代表进程还活着,如果返回False,代表子进程死了

p.is_alive() 判断p进程是否还活着

p.terminate() 杀死p进程

from multiprocessing import Process
import time


def func():
time.sleep(1)
print(123)


if __name__ == '__main__':
p = Process(target=func, )
p.start()
p.terminate() # 杀死p进程,让解释器告诉操作系统,请杀掉p进程。
print('子进程是否还活着?', p.is_alive())
time.sleep(0.002)
print('子进程是否还活着?', p.is_alive())

结果:

子进程是否还活着? True
子进程是否还活着? Falsefrom multiprocessing import Process
import time


def func():
time.sleep(1)
print('子进程')


if __name__ == '__main__':
p = Process(target=func, )
p.start() # p.is_alive()放在start前面都是false,因为还没启动
print(p.is_alive())
p.join()
print(p.is_alive()) # 子进程已经运行结束了
print('主进程结束了')

结果:

True
子进程
False
主进程结束了



Python中,如何区分进程的join和is_alive方法?