提高效率之python的多线程

Python的多线程由于GIL全局解释器锁存在,实际上并不支持真正的并行计算,但在非计算密集型任务中能提升效率。通过threading模块,可以实现线程间的交替执行,从而减少等待时间,例如在等待I/O操作时执行其他任务。
摘要由CSDN通过智能技术生成

python本身的设计对多线程的执行有所限制。为了数据安全设计有GIL全局解释器锁。在python中,一个线程的执行包括获取GIL、执行代码直到挂起和释放GIL。每次释放GIL锁,线程之间都会进行竞争,由拿到锁的线程进入cpu执行,所以由于GIL锁的存在,python里的一个进程永远只能同时执行一个线程。

python的多线程

python的多线程实际上只是在执行的时候看起来像是并发的。

· 使用threading模块
import threading
import datetime
import time

def dosomething(num):
    print('the number is',num)
    time.sleep(1)


if __name__ == '__main__':
    starttime = datetime.datetime.now()
    list = [1,2,3,4,5,6,7,8,9,10]
    for i in list:
        dosomething(i)
    endtime = datetime.datetime.now()
    print('time used',endtime-starttime)

在不使用threading的模块下,由单线程执行上述代码用时10秒,每次sleep的过程都是在等待,效率低。

使用threading模块,在某个线程等待的时间执行其他线程,效率提升。(不足1秒的原因是,没有加j

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值