asyncio.coroutinesを使用して辞書を管理する単純なPythonプログラムを作成しています。設計は、各コルーチンが異なるキーを持つエントリを辞書に追加するというものです。私の質問は、競合状態を避けるために辞書を変更するときに同期が必要なのですか?言い換えれば、辞書に原子を書き込むのですか?ここでPythonで異なるキーを使用して辞書に同時に書き込む
は私のプログラムです:
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()
asyncioモデルとGILに関する洞察を深めてくれてありがとう。 –