首页 > 其他分享 >threading.Thread类详解

threading.Thread类详解

时间:2023-07-28 23:34:24浏览次数:27  
标签:__ name Thread threading 详解 线程 target

 1 '''
 2 threading.Thread类是Python threading模块中用于创建和管理线程的主要类。它可以通过子类化并重写run()方法来定义自己的线程逻辑。一般会使用线程池
 3 1. 构造器:
 4     threading.Thread类的构造器如下:
 5     class threading.Thread(group=None, target=None, name=None, args=(), kwargs={}, *, daemon=None)
 6         1. group:不常用,为了向后兼容而保留。
 7         2. target:指定线程要执行的可调用对象(函数)。
 8         3. name:线程的名称。
 9         3. args:传递给target函数的位置参数,以元组形式提供(元组方式传参一定要和参数的顺序保持一致。)。
10         4. kwargs:传递给target函数的关键字参数,以字典形式提供(字典方式传参字典中的key一定要和参数名保持一致)。
11         5. daemon:指定线程是否为守护线程,默认为None即非守护线程
12 
13 2. 常用方法:
14     1. start():启动线程,使其开始执行任务(如果有重写run方法就自动执行run方法或执行构造器target参数指定的函数/方法)
15     2. join(timeout=None):等待线程执行完成。如果指定了timeout参数,表示最长等待时间,超过该时间后仍未完成,则继续执行后续代码。
16     3. is_alive():检查线程是否仍然活动。
17     4. getName():获取线程的名称。
18     5. setName(name):设置线程的名称。
19     6. ident:线程的唯一标识符,只读属性。也可通过thread_id = threading.get_ident()获取当前线程的id
20 
21 
22 '''
23 import threading
24 import time
25 
26 
27 def task(name):
28     print(f"Thread {name} started")
29     time.sleep(2)  # 模拟耗时操作
30     print(f"Thread {name} finished")
31 
32 
33 def main():
34     thread1 = threading.Thread(target=task, args=("Thread 1",))
35     thread2 = threading.Thread(target=task, args=("Thread 2",))
36 
37     thread1.start()
38     thread2.start()
39 
40     thread1.join()
41     thread2.join()
42 
43     print("All threads completed")
44 
45 
46 if __name__ == "__main__":
47     main()

输出:

Thread Thread 1 started
Thread Thread 2 started
Thread Thread 2 finished
Thread Thread 1 finished
All threads completed

 

继承Thread类创建线程实现多线程多任务的方式:

 1 import threading
 2 import time
 3 
 4 
 5 class MyThread(threading.Thread):
 6     def __init__(self, name):
 7         super().__init__()
 8         self.name = name
 9 
10     def run(self):
11         print(f"Thread {self.name} started")
12         time.sleep(2)  # 模拟耗时操作
13         print(f"Thread {self.name} finished")
14 
15 
16 def main():
17     thread1 = MyThread("Thread 1")
18     thread2 = MyThread("Thread 2")
19 
20     thread1.start()
21     thread2.start()
22 
23     thread1.join()
24     thread2.join()
25 
26     print("All threads completed")
27 
28 
29 if __name__ == "__main__":
30     main()

输出:

Thread Thread 1 started
Thread Thread 2 started
Thread Thread 1 finished
Thread Thread 2 finished
All threads completed

  

标签:__,name,Thread,threading,详解,线程,target
From: https://www.cnblogs.com/allenxx/p/17589136.html

相关文章

  • VMPWN的入门级别题目详解(二)
    实验四VMPWN4题目简介这道题应该算是虚拟机保护的一个变种,是一个解释器类型的程序,何为解释器?解释器是一种计算机程序,用于解释和执行源代码。解释器可以理解源代码中的语法和语义,并将其转换为计算机可以执行的机器语言。与编译器不同,解释器不会将源代码转换为机器语言,而是直接执......
  • YUV格式详解
    YUV是指亮度参量和色度参量分开表示的像素格式,而这样分开的好处就是不但可以避免相互干扰,还可以降低色度的采样率而不会对图像质量影响太大。YUV是一个比较笼统地说法,针对它的具体排列方式,可以分为很多种具体的格式。转载一篇对yuv格式解释的比较清楚地文章,也可以直接参考微软的那......
  • windows下shellcode注入的例子(WriteProcessMemory+CreateRemoteThread)
    vs里x64编译如下代码:  #include<iostream>#include<Windows.h>//#include"common.h"intmain(){ //msfvenom-pwindows/x64/execCMD=notepad.exe-fc unsignedcharshellcode[]= "\xfc\x48\x83\xe4\xf0\xe8\xc0\x00\x0......
  • spool命令使用详解 oracle导出txt文件
    spool命令使用详解原文链接:https://www.xjx100.cn/news/454608.html?action=onClickSPOOL命令使用详解SPOOL是SQLPLUS的命令,必须在SQLPLUS中使用,主要完成以标准输出方式输出SQLPLUS的命令及执行结果,一般常用户格式化导出ORACLE表数据。 对于SPOOL数据的SQL,最好要自己定......
  • java多线程学习-java.util.concurrent详解
    java多线程学习-java.util.concurrent详解(一)Latch/Barrier   Java1.5提供了一个非常高效实用的多线程包:java.util.concurrent,提供了大量高级工具,可以帮助开发者编写高效、易维护、结构清晰的Java多线程程序。从这篇blog起,我将跟大家一起共同学习这些新的Java多线......
  • 图注意力网络论文详解和PyTorch实现
    图神经网络(gnn)是一类功能强大的神经网络,它对图结构数据进行操作。它们通过从节点的局部邻域聚合信息来学习节点表示(嵌入)。这个概念在图表示学习文献中被称为“消息传递”。消息(嵌入)通过多个GNN层在图中的节点之间传递。每个节点聚合来自其邻居的消息以更新其表示。这个过......
  • MySQL_Explain详解
    当我们在工作中面临SQL优化的问题时,熟练掌握适合的工具,就能使事半功倍,提高工作效率。其中,EXPLAIN工具就是一种常用且高效的SQL优化工具。EXPLAIN关键字的使用方法是,在select语句之前添加它,这样MySQL会在查询上设置一个标记。但不同于普通查询,此时执行的并不是查询语句本......
  • (小白必看)详解yolov5训练自己的数据集 & 使用香烟数据集训练yolov5识别香烟
    创建数据集目录在YOLOv5根目录下创建mydata文件夹(名字可以自定义),目录结构如下,将之前labelImg标注好的xml文件和图片放到对应目录下mydata…images#存放图片…xml#存放图片对应的xml文件…dataSet#之后会在Main文件夹内自动生成train.txt,val.txt,test.txt和trainval.txt四个......
  • JavaScript中this关键字详解(二)
    使用注意点避免多层this由于this的指向是不确定的,所以切勿在函数中包含多层的this。varo={f1:function(){console.log(this);//objectvarf2=function(){console.log(this);//window}();}}​o.f1()//Object//Window上面代码......
  • JavaScript中this关键字详解(一)
    涵义this关键字是一个非常重要的语法点。毫不夸张地说,不理解它的含义,大部分开发任务都无法完成。this可以用在构造函数之中,表示实例对象。除此之外,this还可以用在别的场合。但不管是什么场合,this都有一个共同点:它总是返回一个对象。简单说,this就是属性或方法“当前”所在的对象......