作者:白杨树 | 来源:互联网 | 2024-11-14 12:47
在多线程编程中,经常会遇到僵尸进程和孤儿进程这两个概念。
僵尸进程: 当子进程结束而父进程尚未结束时,子进程会变成僵尸进程。僵尸进程虽然已经完成任务,但其状态信息仍保留在进程表中,直到父进程调用wait()或waitpid()系统调用来获取子进程的状态信息并释放资源。
孤儿进程: 当父进程先于子进程结束时,子进程会变成孤儿进程。所有的孤儿进程会被1号进程(init进程)接管,1号进程会定期检查是否有新的孤儿进程需要处理,并调用wait()或waitpid()来回收这些孤儿进程的资源。
在Linux系统中,0号进程(swapper或idle进程)是系统启动时的第一个进程,负责调度其他进程的执行。1号进程(init进程)是系统启动后的第一个用户级进程,负责生成其他用户级进程,并管理所有孤儿进程。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
2018-6-22 21:24:13
多线程学习示例
'''
from threading import Thread
import time
def test():
print("--====昨晚喝多了,下次少喝点!!!")
time.sleep(1)
def main():
'''创建线程'''
for i in range(5):
# 创建一个线程
t = Thread(target=test)
t.start()
if __name__ == '__main__':
main()
# 使用线程的第二种方式,封装成一个类
import threading
import time
class MyThread1(threading.Thread):
'''创建一个类继承多线程类'''
def run(self):
for i in range(3):
time.sleep(1)
msg = "I'm " + self.name + "@" + str(i) # name属性中保存的是当前线程的名字
print(msg)
if __name__ == '__main__':
t = MyThread1()
t.start()
以上代码展示了如何在Python中使用多线程。通过直接调用Thread类和继承Thread类两种方式,我们可以轻松实现多线程编程。