擅长:python、mysql、java
<p>值得注意的是,Google的风格指南建议不要依赖dict原子性,正如我在:<a href="https://stackoverflow.com/questions/2291069/is-python-variable-assignment-atomic/55279169#55279169">Is Python variable assignment atomic?</a>中详细解释的那样</p>
<blockquote>
<p>Do not rely on the atomicity of built-in types.</p>
<p>While Python’s built-in data types such as dictionaries appear to have atomic operations, there are corner cases where they aren’t atomic (e.g. if <code>__hash__</code> or <code>__eq__</code> are implemented as Python methods) and their atomicity should not be relied upon. Neither should you rely on atomic variable assignment (since this in turn depends on dictionaries).</p>
<p>Use the <code>Queue</code> module's Queue data type as the preferred way to communicate data between threads. Otherwise, use the threading module and its locking primitives. Learn about the proper use of condition variables so you can use <code>threading.Condition</code> instead of using lower-level locks.</p>
</blockquote>
<p>我同意这一点:CPython中已经有GIL,因此使用锁的性能影响可以忽略不计。当这些CPython实现细节有朝一日发生变化时,在复杂的代码库中搜索bug所花费的时间要多得多。</p>