在与一些人就甲型六氯环己烷例外处理问题进行了简短辩论之后,我觉得我 throw弃了它。
METHOD 1:
import Queue
q = Queue.Queue()
try:
task=q.get(False)
#Opt 1: Handle task here and call q.task_done()
except Queue.Empty:
#Handle empty queue here
pass
#Opt2: Handle task here and call q.task_done()
METHOD 2:
import Queue
q = Queue.Queue()
if q.empty():
#Handle empty queue here
else:
task = q.get()
#Handle task here
q.task_done()
一种论点是,方法1是错误的,因为空洞并非错误,因此不应使用Quue处理。 就业例外。 此外,如果你认为任务处理部分可能很大的话,那么如果将这种方式编码的话,就会使分解变得更加困难。
另一种论点是,要么在沙尔接受,要么在审判之外处理任务,要么如果任务处理规模很大,则会协助偷渡,尽管一致认为这可能比使用方法2更看问题。
意见?
UPDATE: A little more info after answer 1 came through.... The debate was started after method 1 was using in some multithreaded code. In which case, the code will acquire the lock (from a threading.Lock object) and release it either once the task it returned or Queue.Empty is thrown
附录 2. 我们大家不知道, object子已经安全。 看起来像尝试/例外是走路!