首页 > 编程语言 > 详细

python 多任务 学习二

时间:2019-09-27 18:20:50      阅读:90      评论:0      收藏:0      [点我收藏+]

多线程

  1. 全部变量

    主线程下的变量, 多任务共享全局变量

技术分享图片

 

 结果为:

技术分享图片

 

 

说明:

  类中创建 函数run(),  通过函数demo()实例化对象来创建线程, 此时线程会自动调用类中的run()来执行。

  全局变量a ,它的值会在线程执行过程中改变。并且是在生成的两个线程中都可以改变。说明此全局变量可以被线程共享使用

注:全局变量的问题:

  此代码存在资源竞争问题:当run()中的循环次数增加到足够多时,就会出现一个问题,如,当a的值为3时,一个线程取到了这个值3,并改变了a的值(a=4),另一个线程同时取到a的值3,并改变了a的值(a=4),这时的变量值就会出现误差。循环次数越大,出现这种问题的概率就越大

技术分享图片

 

 

结果:

技术分享图片

 

 

 

  2.  处理全局变量资源竞争问题---互斥锁

    使用python 库 threading中的Lock功能,可以生成一把锁(默认锁是打开的)。

    将每个线程中,改变全局变量的部分用锁锁住(上锁:threading.Lock.acquire()  解锁:threading.Lock.release()), 之后,哪个线程抢先执行到互斥锁的位置,哪个先上锁,其它线程必须等到此线程解锁后,才能继续执行

技术分享图片

 

 

结果:

 技术分享图片

python 多任务 学习二

原文:https://www.cnblogs.com/leafchen/p/11599229.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!