当前位置: 首页 > news >正文

【18.5 python中创建线程】

python中创建线程

在Python中,创建线程主要通过threading模块来实现。这个模块提供了两种主要的方式来创建线程:直接使用threading.Thread类,以及通过继承threading.Thread类并覆写其run方法来创建自定义的线程类。下面分别介绍这两种方法。

1. 使用threading.Thread模块创建线程

这是最直接且常用的方法。你只需创建一个threading.Thread的实例,并将要在线程中执行的函数作为target参数传递给构造函数。然后,调用该实例的start()方法来启动线程。

import threading
import time# 定义要在线程中执行的函数
def worker(num):"""线程工作函数"""print(f'Worker: {num}')time.sleep(2)  # 模拟耗时操作print(f'Worker {num} finished')# 创建线程
t1 = threading.Thread(target=worker, args=(1,))
t2 = threading.Thread(target=worker, args=(2,))# 启动线程
t1.start()
t2.start()# 等待线程完成(实际上在这个简单的例子中,主线程在启动两个子线程后就会立即继续执行,直到脚本结束)
# 在实际应用中,你可能需要在这里加入一些逻辑来等待所有线程完成,比如使用t1.join()和t2.join()

2. 使用Thread子类创建线程

另一种方法是通过继承threading.Thread类来创建自定义的线程类。在这个自定义类中,你需要覆写(override)run方法,该方法将包含线程执行时应当执行的代码。然后,你可以创建这个类的实例并调用其start()方法来启动线程。

import threading
import time# 继承自threading.Thread的自定义线程类
class MyThread(threading.Thread):def __init__(self, num):super().__init__()  # 调用父类的初始化方法self.num = numdef run(self):"""线程执行的代码放在这里"""print(f'Starting MyThread: {self.num}')time.sleep(2)  # 模拟耗时操作print(f'MyThread {self.num} finished')# 创建自定义线程类的实例
t1 = MyThread(1)
t2 = MyThread(2)# 启动线程
t1.start()
t2.start()# 等待线程完成(同样,这里可能需要使用join方法来等待所有线程完成)

在这两种方法中,第二种方法(使用Thread子类)提供了更高的灵活性和可重用性,尤其是当你需要在多个地方使用具有相似行为但可能稍有不同的线程时。然而,对于简单的任务,直接使用threading.Thread类并传递一个函数作为target参数通常更加快捷和方便。

请注意,在两种方法中,都需要调用线程的start()方法来启动线程。调用start()方法后,Python解释器会自动调用线程对象的run()方法来执行线程的任务。你不应该直接调用run()方法,因为这样做不会启动新线程,而是会在当前线程中同步执行run()方法中的代码。


http://www.mrgr.cn/news/18646.html

相关文章:

  • AI大模型开发转型指南:如何学习并成功找到工作?
  • web渗透:文件解析漏洞
  • 动手打造互动虚拟人
  • windows python的jupyter的安装教程
  • classmethod的使用
  • 记一次学习--HIDS-phpwebshell绕过
  • 视频搬运的素材网站有哪些?打包好的视频素材在哪找?
  • ArcGIS中利用DEM提取水系线
  • 操作教程丨MaxKB+Ollama:快速构建基于大语言模型的本地知识库问答系统
  • MAT:一款针对MSSQL服务器的安全检测与审计工具
  • 数图亮相第三届中国区域零售创新峰会:共绘零售新蓝图,携手迈向新征程
  • git stash命令及丢失代码问题
  • 8、Django Admin后台中添加Logo
  • Scott Brinker:Martech中的AI会让买家体验更好还是更糟?这取决于…….
  • 解除禁售!Ozon重新开放电子产品等品类销售,Ozon出单了怎么发货?
  • 取图、壁纸,表情包小程序源码系统搭建,已对接好流量主轻松变现
  • 一文速学ChatBi“与数据库对话“大模型技术原理及框架一览
  • 人工智能大模型工作原理(包括数据收集与预处理、大模型训练、大模型部署与应用)
  • 网络热词、热梗、流行语网站汇总
  • 电话销售人员开发客户的基本过程 电销系统部署