我正在编写一个简单的 Python 程序,它使用 asyncio.coroutines 维护一个字典。其设计是每个协程向字典添加一个具有不同键的条目。我的问题是,修改字典时是否需要同步以避免竞争条件?换句话说,写入字典是原子的吗?
这是我的程序:
map ={}
key_set = Set(...)
@asyncio.coroutine
def update(key):
# do I need synchronization here to avoid race condition?
map[key] = ... # add a new entry with key to the map
fut = []
for key in key_set:
fut.append(update(key))
loop = asyncio.get_event_loop()
loop.run_until_complete(
asyncio.gather(*fut)
)
loop.close()
Run Code Online (Sandbox Code Playgroud)