请教 asyncio 生产-消费函数使用互斥锁保护 queue 共享资源

查看 22|回复 0
作者:ALLROBOT   
如题,库函数看的累人,希望有人口语化解释一下
python 3.8.0
[ol]
  • 使用 semaphore 控制并发访问资源,并发访问网络资源并保存到本地,问了 chatgpt ,它说如果获取网页资源后,在 queue.put(xx)或 queue.get()之前不加 asyn with lock ,生产函数可能会覆盖队列中的数据、或者几个消费函数争抢同一个数据?
    [/ol]
    实际测试,不管加不加锁,生产函数没有覆盖数据的情况,消费函数们各拿各自的,没有多个消费函数拿同一个队列同一个数据的情况,实际情况怎么样就不清楚了
    那么,有必要加锁给消费函数获得独占 queue 的访问权限,确保仅有一个消费函数只拿一个数据,这样会防止数据竞争的问题?
    [ol]
  • 使用 semaphore>=2 的情况下,算是多个生产函数往 queue 添加数据吗?
    [/ol]
    chatgpt 回答自相矛盾,说用semaphore的情景下,能保护共享资源不会发生数据争抢。。。我问既然用semaphore那有必要用asyn with lock么,它答如果不加锁会导致访问共享资源产生的一些问题。。。
  • 您需要登录后才可以回帖 登录 | 立即注册

    返回顶部