Python3 Asyncio在并发任务之间共享资源

Cel*_*ydy 5 python concurrency python-3.x shared-resource python-asyncio

我有一个用Python3.5编写的网络应用程序,它利用了python Asyncio并发处理每个传入连接。

在每个并发连接上,我想将连接的客户端数据存储在列表中。我担心如果两个客户端同时连接(这是可能的),那么这两个任务都将尝试同时写入列表,这肯定会引起问题。我该如何解决?

And*_*lov 8

asyncio 仅在屈服点await表达式)上进行上下文切换,因此两个并行任务不会同时执行

但是,如果竞争条件仍然可能(这取决于具体的代码结构),您可以使用asyncio 同步原语队列