擅长:python、mysql、java
<p>如果你的意思是你只使用一个线程来做所有事情,那么是的。如果没有其他人访问它,它就没有办法改变。在</p>
<p>如果你的意思是总体上有两个线程,那么不,仍然存在竞争条件的机会。在</p>
<p>不管怎样,真正的问题是你为什么要这样做?试试看,如果它失败了,就捕捉异常——这是Python的方法。在</p>
<pre><code>try:
some_queue.get_nowait()
except queue.Empty:
do_something_else()
</code></pre>
<p>这样做的好处是将来是线程安全的,并且在任何情况下都避免了争用情况(不需要线程来导致这种情况,您只需在check和get之间进行一个调用来更改代码)。在</p>
<p>编辑:正如<a href="https://stackoverflow.com/users/166749/larsmans">larsmans</a>在下面的评论中指出的,在与竞态条件有关的其他问题中,CPython的<code>Queue.full()</code>标记为<em>可能在某个时刻被移除,因此还有另一个避免它的原因。在</p>