gpt4 book ai didi

Python 异步 : how single thread can handle mutiple things simultaneously?

转载 作者:太空宇宙 更新时间:2023-11-04 09:40:24 24 4
gpt4 key购买 nike

嗨,我是 asyncio 和事件循环(非阻塞 IO)概念的新手

async def subWorker():
...

async def firstWorker():
await subWorker()


async def secondWorker():
await asyncio.sleep(1)


loop = asyncio.get_event_loop()
asyncio.ensure_future(firstWorker())
asyncio.ensure_future(secondWorker())
loop.run_forever()

这里,当代码开始时,firstWorker() 被执行并暂停,直到遇到 await subWorker()。当 firstWorker() 等待时,secondWorker() 开始。

问题是,当 firstWorker() 遇到 await subWorker() 并暂停时,计算机将执行 subWorker()secondWorker() 同时。由于程序现在只有 1 个线程,我猜想 secondWorker() 工作的是单个线程。那么谁来执行subWorker()呢?如果单线程一次只能做一件事,还有谁做其他工作?

最佳答案

subWorkersecondWorker 同时执行的假设是错误的。

secondWorker 只是休眠的事实意味着可用时间将花费在 subWorker 上。

asyncio 根据定义是单线程的;查看documentation :

This module provides infrastructure for writing single-threaded concurrent code

事件循环一次执行一个任务,例如当一个任务在等待 I/O 时被阻塞时切换,或者像这里一样,自愿休眠。

关于Python 异步 : how single thread can handle mutiple things simultaneously?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51933418/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com