热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Python多线程详解与示例

本文介绍了Python中的多线程编程,包括僵尸进程和孤儿进程的概念,并提供了具体的代码示例。同时,详细解释了0号进程和1号进程在系统中的作用。

在多线程编程中,经常会遇到僵尸进程和孤儿进程这两个概念。

僵尸进程: 当子进程结束而父进程尚未结束时,子进程会变成僵尸进程。僵尸进程虽然已经完成任务,但其状态信息仍保留在进程表中,直到父进程调用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类两种方式,我们可以轻松实现多线程编程。


推荐阅读
author-avatar
白杨树
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有