asyncio.Queue在有1个协程向队列添加数据,1个协程从队列获取数据时会卡住。
创始人
2024-09-21 05:30:29
0

可以使用asyncio.Lock来确保只有一个协程在同时执行添加或者获取操作,防止被阻塞。下面是示例代码:

import asyncio

async def producer(q, lock):
    while True:
        async with lock:
            await q.put('data')
        await asyncio.sleep(1)

async def consumer(q, lock):
    while True:
        async with lock:
            data = await q.get()
        print(data)
        await asyncio.sleep(1)

async def main():
    q = asyncio.Queue()
    lock = asyncio.Lock()
    producer_task = asyncio.create_task(producer(q, lock))
    consumer_task = asyncio.create_task(consumer(q, lock))
    await asyncio.gather(producer_task, consumer_task)

asyncio.run(main())

在这段示例代码中,我们创建了一个异步锁asyncio.Lock(),并在producer和consumer协程中使用with关键字来对锁进行上下文管理。

这样,在任何时候,只会有一个协程在执行添加或获取操作,防止了队列被卡住的情况出现。

相关内容

热门资讯

黑科技ai代打(wepoke软... 黑科技ai代打(wepoke软件透明挂多少钱)太离谱了好像真的是有挂(透视)分享教程(2026已更新...
黑科技ai代打(德州AI辅助工... 黑科技ai代打(德州AI辅助工具)太坑了原先有挂(透视)揭秘教程(2024已更新)(哔哩哔哩)1、用...
黑科技科技(aapoker透明... 黑科技科技(aapoker透明挂下载)太夸张了原来是真的有挂(透视)微扑克教程(2026已更新)(哔...
黑科技插件(德扑之星安卓模拟器... 黑科技插件(德扑之星安卓模拟器)太嚣张了竟然真的有挂(透视)德州论坛(2022已更新)(哔哩哔哩)1...
黑科技私人局(德扑之星ai计算... 1、黑科技私人局(德扑之星ai计算)太离谱了果然有挂(透视)专业教程(2023已更新)(哔哩哔哩);...
黑科技智能ai(wepoke透... 黑科技智能ai(wepoke透明挂真假辨别)太坑了起初真的是有挂(透视)解密教程(2023已更新)(...
黑科技实锤(德之星辅助工具)太... 1、黑科技实锤(德之星辅助工具)太无语了本然是有挂(透视)黑科技教程(2021已更新)(哔哩哔哩);...
黑科技软件(德州ai辅助神器靠... 黑科技软件(德州ai辅助神器靠谱吗)太无语了竟然存在有挂(透视)教你攻略(2020已更新)(哔哩哔哩...
黑科技工具(红龙扑克辅助器下载... 黑科技工具(红龙扑克辅助器下载)太离谱了固有存在有挂(透视)可靠技巧(2020已更新)(哔哩哔哩)1...
黑科技实锤(wepoke透明挂... 黑科技实锤(wepoke透明挂使用教程)太夸张了一向存在有挂(透视)必赢教程(2025已更新)(哔哩...