百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

Python 如何通过 threading 模块实现多线程。

off999 2025-07-06 15:50 52 浏览 0 评论

先熟悉下相关概念

多线程是并发编程的一种方式,多线程在 CPU 密集型任务中无法充分利用多核性能,但在 I/O 操作(如文件读写、网络请求)等待期间,线程会释放 GIL,此时其他线程可以运行。GIL是Python 解释器的全局锁,同一时刻只能有一个线程执行 Python 字节码。我们先来看看如何创建和启用的


先要导入相关模块,threading

通过线程实例来模拟下,代码如下:

import threading
import time
def test(name):
    print(f"线程 {name} 开始")
    time.sleep(2)  # 模拟 I/O 操作
    print(f"线程 {name} 结束")
# 创建线程
thread1 = threading.Thread(target=test, args=("1",))#线程实例1
thread2 = threading.Thread(target=test, args=("2",))#线程实例2
# 启动线程
thread1.start()
thread2.start()
# 等待线程结束
thread1.join()
thread2.join()
print("所有开启的线程都已经结束")

运行下看看


实际使用中,多线程操作共享资源时可能引发竞态条件,我们如何保证线程安全呢?

就需要买一把锁,和我们生活中一样,锁下控制,保障安全进行使用

如何用锁呢,通过使用模块 threading中的Lock()方法,然后在运行中去使用产生它

lock = threading.Lock()

我们多线程和锁(Lock)来安全地对共享变量 counter 进行累加操作。两个线程各自执行 100,000 次累加,预期下我们的最终结果为 200,000,代码如下

import threading
counter = 0
lock = threading.Lock()#锁的对象
def test_lock():
    global counter #明确下 全局
    for _ in range(100000):
        with lock:  # 自动加锁/释放,保证独占counter,退出后允许其他线程使用
            counter += 1#假如没有锁的话,会竞争,切换时可以能被线程打断,导致少加
            #在with内,确保累计
threads = []
for _ in range(2):#创建2个
    t = threading.Thread(target=test_lock)
    threads.append(t)
    t.start()
for t in threads:
    t.join()
print(f"最后输出counter是: {counter}")  # 正确结果应为 200000

看下运行情况



但是频繁锁也不好,会影响一些性能,可以考虑线程容器,比如队列。

队列使用安全传递,代码如下:


总的来说,多线程使用场景不少,通过用线程,我们可以提示软件的响应时间、吞吐量等。但是我们要避免死锁。采用锁、队列等一些方法来保护共享资源,合理使用线程,避免过度创建,导致产生问题。

就这了,更深入的自己去深挖吧。

相关推荐

win7什么版本最好用(win7哪个版本最稳定流畅)

Windows7旗舰版,最好,最稳定。Windows7,是由微软公司(Microsoft)开发的操作系统,内核版本号为WindowsNT6.1。Windows7可供选择的版本有:简易版(Sta...

win7自带虚拟光驱怎么使用(win7系统虚拟光驱安装教程)

以DAEMONTools为例,360软件管家里面就有最新版的下.安装后使用方法如下:第一种方法:在虚拟光驱界面中,你先按一下中间工具栏最左边“+”符号的按钮,添加镜像文件(可以一次添加多个),这...

电脑装系统蓝屏(电脑装系统蓝屏重启开不了机)

蓝屏的原因往往集中在不兼容的硬件和驱动程序、有问题的软件、病毒等。解决办法:1、病毒的原因。使用电脑管家杀毒。2、内存的原因。用橡皮擦把内存条的金手指擦拭一下,把氧化层擦掉,确保内存条安装、运行正常。...

u盘安装软件(u盘安装软件到电视)

第一种情况:软件安装包可以直接下载的。在电脑上将软件安装包下载到本地硬盘,然后将下载好软件安装包拷贝到U盘上即可拿到别的电脑上去安装。分可为exe格式的和rar格式,exe格式直接安装,rar格式的解...

microsoft官网账户注册(microsoft 帐户注册)

要创建Microsoft账户,您可以按照以下步骤进行操作:1.打开任意一个支持浏览器的设备,如电脑、手机或平板电脑。2.在浏览器中输入"Microsoft账户注册"或直接访问Mic...

outlookcom官网(outlook online archive auto)
  • outlookcom官网(outlook online archive auto)
  • outlookcom官网(outlook online archive auto)
  • outlookcom官网(outlook online archive auto)
  • outlookcom官网(outlook online archive auto)
显示器闪屏是什么原因(显示器闪屏是哪里坏了)

解决方法:  一、接触不良导致的显示器闪屏  先查看主机和显示器的电源线连接,是否松动,重新插拔一下电源线。  二、信号干扰导致的显示器闪屏  1、连接显示器的电缆线是否没有屏蔽线圈,如果没有防干扰的...

国产linux操作系统(国产linux操作系统有什么版本)

中国对于操作系统的探索其实并不晚。  早在20世纪60年代中期中国就开始操作系统的研发,那时的比尔·盖茨还只是个迷恋计算机的小字辈,南京大学教授孙钟秀、北京大学杨芙清院士等都是我国操作系统的拓荒者...

免费无需排队的云电脑(不需要排队的云电脑)

目前市场上有一些云游戏平台提供无限时长且无需排队的服务。这些平台通常采用先进的云计算技术和高性能服务器,能够提供稳定流畅的游戏体验。用户可以随时登录并畅玩游戏,无需等待排队。这些平台还提供多种游戏选择...

视频播放器下载量排名(2020视频播放器排行榜)
  • 视频播放器下载量排名(2020视频播放器排行榜)
  • 视频播放器下载量排名(2020视频播放器排行榜)
  • 视频播放器下载量排名(2020视频播放器排行榜)
  • 视频播放器下载量排名(2020视频播放器排行榜)
wps官方下载(wps官方下载官网电脑版网址)

具体的步骤如下:1、首先在电脑上打开浏览器,在浏览器中输入“WPS”,找到WPS官方网站。2、接下来进入WPS官方网站中,找到WPS软件,点击“免费下载”。3、点击下载后在弹出来的对话框中修改下载位置...

win vista与win7有什么区别(win7与vista关系)

WindowsVista和Windows7是微软公司推出的两个桌面操作系统,它们之间有以下主要区别:1.界面设计:Windows7的界面设计更加简洁明了,而WindowsVista的界面...

winxp系统版本(winxp 版本)

1、微软官方3个版本:WINDOWSXPHOME(家庭版)、Professional(专业版)、MediaCenter2005(媒体中心版),每个版本的功能不一样。使用最多的是Professional...

打印机无法共享怎么回事(打印机无法共享出去)

共享打印机无法打印原因一:可能是由于病毒死机解决方法:确定是否由于病毒死机,找一张干净(确信无病毒)的系统盘,从A驱动舒上启动电脑,检查此时打印机和主机能否联机。如果正常联机,估计这种故障是由攻击硬件...

ipv6无网络访问权限怎么解决

ipv6无网络访问权限解决方法如下1、点击电脑左下角的开始,进入到开始的菜单栏,在菜单栏中找到“运行”。或者通过快捷键Windows+R打开运行窗口。  2、打开运行的窗口页面后,在页面上输入“CMD...

取消回复欢迎 发表评论: