python多线程lock,

  python多线程lock,

  实用python并发编程(六):线程安全问题及锁解决方案_wx5de339d64c54e _博客的技术博客

  线程安全概念介绍

  锁用于解决线程安全问题。

  解锁导致的重复扣款现在有取钱功能了。如果账户余额大于取钱金额,就会取钱,启动两个线程,同时取钱。可能余额不足,但也可以取钱。如果加上等待时间,这种现象是不可避免的,因为睡眠会阻塞线程,造成线程切换。

  tmp/03.lock_concurrent.py

  导入线程

  导入时间

  类别帐户:

  def __init__(self,balance):

  自我平衡=平衡

  定义提取(账户,金额):

  如果账户余额=金额:

  #sleep会导致线程阻塞和线程切换,所以每次都会出现添加sleep。

  时间.睡眠(0.1)

  Print (threading.current _ thread()。名称,成功取款)

  帐户.余额-=金额

  Print (threading.current _ thread()。名称,余额,账户.余额)

  否则:

  Print (threading.current _ thread()。名称,取钱失败,余额不足)

  if __name__==__main__ :

  账户=账户(1000)

  ta=线程。Thread(name=ta ,target=draw,args=(account,800))

  tb=线程。Thread(name=tb ,target=draw,args=(account,800))

  ta.start()

  tb.start()

  锁

  为了演示串行和多线程锁的速度,简单修改代码,发现多线程锁更快。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: