了解线程同步

时间:2016-09-16 23:06:29

标签: python multithreading

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)

但是代码示例只是更新一个全局变量,因此无论如何都是线程安全的吗?

我在这里缺少什么?

1 个答案:

答案 0 :(得分:3)

在Python中代码:

counter += 1

与说法相同:

counter = counter + 1

因此,值的查找与更新是分开的。