看啥推荐读物
专栏名称: Python入门与进阶
Python网络爬虫与数据挖掘、分析,尽在 datanami
今天看啥  ›  专栏  ›  Python入门与进阶

Python中一条高端、大气、上档次的语句

Python入门与进阶  · 公众号  ·  · 2018-10-24 11:25
在说with语句之前,先看看一段简单的代码吧lock = threading.Lock() ... lock.acquire() elem = heapq.heappop(heap) lock.release()很简单直观,多个线程共用一个优先级队列的时候,首先先用互斥锁lock.acquire()把优先级队列锁上,然后取元素,再然后lock.release()释放这个锁。虽然看似非常符合逻辑的一个过程,但是里面隐藏着一个巨大的bug:当heap里面没有元素的时候,会抛出一个IndexError异常,再然后堆栈回滚,再然后lock.release()根本不会执行,这个锁就永远得不到释放,因此就发生了喜闻乐见的死锁问题。这个也是很多大神们讨厌异常的原因。经典Java风格的解决方案就是lock = threading.Lock()...lock.acquire()try:    elem = heapq.heappop(heap)finally:    lock.release()这个虽然可以,但是怎么看怎么dirty,和Pyt ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照