Python 2.7 - 只有在它不存在的情况下才能原子地添加dict条目?

时间:2015-12-29 21:07:32

标签: python multithreading python-2.7 dictionary

假设我在python中有一些字典,我希望能够保证给定键的值只设置一次。

我知道我可以通过选中has_key(newkey),然后选择dict[newkey]=value来完成此操作。

这适用于单线程应用程序:

d = { 1:'spam', 2:'eggs' }

def add_entry( key, val ):
    if not d.has_key(key):
        d[key] = val
    else:
        raise Exception('Nice try, but value with key '%s' already exists' %str(key))

# Succeeds
add_entry( 3, 'ham' )

# Fails with exception
add_entry( 2, 'cheese' )

但是,我想从多线程应用程序中实现相同的行为。

上面add_entry的线程安全impl是什么?有没有内置的方法/数据结构我只是这样做?或者我需要使用显式锁?

0 个答案:

没有答案