Fredrik Lundh标题为Thread Synchronization Mechanisms in Python的文章给出了以下示例,表明多个线程的运行可能会导致值不准确。
counter = 0
def process_item(item):
global counter
... do something with item ...
counter += 1
然后继续说这些东西是线程安全的:
reading or replacing a single instance attribute
reading or replacing a single global variable
fetching an item from a list
modifying a list in place (e.g. adding an item using append)
fetching an item from a dictionary
modifying a dictionary in place (e.g. adding an item, or calling the clear method)
但是代码示例只是更新一个全局变量,因此无论如何都是线程安全的吗?
我在这里缺少什么?
答案 0 :(得分:3)
在Python中代码:
counter += 1
与说法相同:
counter = counter + 1
因此,值的查找与更新是分开的。