为什么我不能用同期期货异步循环?

2024-04-19 22:10:49 发布

您现在位置:Python中文网/ 问答频道 /正文

根据asyncio文档,它指出asyncio具有:

"a Future class that mimics the one in the concurrent.futures module, but adapted for use with the event loop;"

为什么在标准库中需要有两个不同的未来类(异步和并发)?为什么有必要为事件循环调整它?我在这里遗漏了什么,或者是什么让他们这样决定的?在


Tags: thein文档asyncioforthatfutureone
1条回答
网友
1楼 · 发布于 2024-04-19 22:10:49

Why is there a need to have two different Future classes in the standard library (in asyncio and in concurrent)?

虽然这些类看起来很相似,但它们用于两种不同的并发编程范式,并且具有不同的实现和接口。例如

concurrent.futures.Future用于基于线程/进程的并发编程,不应该对事件循环一无所知,因为在这种情况下没有事件循环。它的result方法只是阻止线程/进程的执行流,直到超时或future完成。在

asyncio.Future用于基于协程的并发编程,应了解事件循环、协程函数和其他相关内容。它的result方法不会阻塞执行流,因为在这种情况下,执行流根本不应该被阻塞。相反,您应该等待future,直到它完成,允许返回执行流并由事件循环管理。在

混合使用它们没有好处,而拆分类使它们的实现更简单,接口更清晰。在

相关问题 更多 >