python多线程并发的优缺点之解决方案(线程锁)

首先我们来简述一下并发的优缺点并发的优点:要把100M 数据写入磁盘,CPU 计算的时间只需要0.01s,可是磁盘接受这100M 数据却需要10s,怎么办呢?有两种办法1、第一种办法是 CPU 等着,也就是程序暂停执行后续代码,直到磁盘写入数据完成再继续往下执行import threadingimport timestart_time=time.time()def foo(str...
摘要由CSDN通过智能技术生成

首先我们来简述一下并发的优缺点
并发的优点:

要把100M 数据写入磁盘,CPU 计算的时间只需要0.01s,可是磁盘接受这100M 数据却需要10s,
怎么办呢?有两种办法
1、第一种办法是 CPU 等着,也就是程序暂停执行后续代码,直到磁盘写入数据完成再继续往下执行

import  threading
import time
start_time=time.time()
def foo(str):
    print(str)
    time.sleep(2)


foo('磁盘接受100M数据')
foo('数据接受完毕,cpu去做其他事情。')
end_time=time.time()
times= end_time-start_time
print('共使用时间:',times)

这是并行的逻辑,查看结果共使用时间4s
在这里插入图片描述
2、第二种办法是 CPU 告诉磁盘:“您老人家慢慢写,我去做别的事情了”

import time
start_time=time.time()
def foo(str):
    print(str)
    time.sleep(2)

t1=threading.Thread(target=foo,args=('磁盘接受100M数据',))
t2=threading.Thread(target=foo,args=('你慢慢写,cpu去做其他事情',))
t1.start()
t2.start()
t1.join()
t2.join()
end_time=time.time()
times= end_time-start_time
print('共使用时间:',times)

输出结果:
在这里插入图片描述
从结果可以看出共使用了2s,效率提升1倍

注意:多线程对I/O 有效果,对于需要cpu计算的 时候,反复切换会浪费时间反而会降低效率具体看下面的例子:
看下面的并行的代码

import time,threading
begin_time=time.time()
def 
  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值