python中的多线程

python中的多线程

基本操作

创建线程:

方式一:
使用_thread模块直接开启一个线程

import _thread
_thread.start_new_thread()

方式二:
继承一个线程类(可以自定义该线程类,继承threading.Thread)

 import threading
class my_thread(threading.Thread):
    def __init__(self[,…]):
        pass
    def run(self):
        pass
thread1=my_thread([,…])
thread1.start()

方式三:
使用threading.Thread

import threading
thread=threading.Thread(target=f())
thread.setDaemon(True)##默认为False
thread.start()

构造方法threading.Thread()

Thread(group=None, target=None, name=None, args=(), kwargs={})
  group: 线程组,目前还没有实现,库引用中提示必须是None;
  target: 要执行的方法;
  name: 线程名;
  args/kwargs: 要传入方法的参数。

实例方法

isAlive(): 返回线程是否在运行。正在运行指启动后、终止前。
get/setName(name): 获取/设置线程名。
start(): 线程准备就绪,等待CPU调度
is/setDaemon(bool): 获取/设置是后台线程(默认前台线程(False))。(在start之前设置)
start(): 启动线程。
join([timeout]): 阻塞当前上下文环境的线程,直到调用此方法的线程终止或到达指定的timeout(可选参数)

Daemon(守护)

设置Daemon属性为True的线程为主线程的守护线程。
顾名思义,即将该线程设置为主线程所守护的宝宝线程(xd)

在脚本运行过程,主线程中创建了子线程,当主线程结束时根据子线程daemon属性值的不同可能会发生下面的两种情况之一:

若某个子线程的daemon属性为False,主线程结束时会检测该子线程是否结束,如果该子线程还在运行,则主线程会等待它完成后再退出;
若某个子线程的daemon属性为True,主线程会在结束后时同时将该子线程也结束掉,不论该子线程是否完成
另。若某个子线程的属性为False,则只有子调用thread.start()之前才能设置该值

join函数

应用场景:
当主线程结束后,Daemon属性为True的线程也会结束,然而此时可能该线程还没有完成其任务。此时就需要join函数了
join函数的作用是使线程之间同步

for thread in threads:
            thread.join()

这样设置之后,主线程结束之后,会等待被join的线程结束,再退出程序

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容