草庐IT

Asyncio库

全部标签

python - "yield from"语法在 asyncio 中有什么作用,它与 "await"有何不同

从编写过asyncio代码但希望更好地理解内部工作原理的人的角度来看,yieldfrom、await是什么以及这些对允许有什么用处异步代码?有一个highlyupvoted关于yieldfrom语法和oneexplainingasyncandawait用法的问题,但两者都深入探讨了不同的主题,并没有真正简明地解释底层代码以及它如何适应asyncio。 最佳答案 简答:yieldfrom是等待asyncio协程的老方法。await是一种等待asyncio协程的现代方式。详细回答:Python有生成器——一种特殊的函数,可以生成一系列结

python - "yield from"语法在 asyncio 中有什么作用,它与 "await"有何不同

从编写过asyncio代码但希望更好地理解内部工作原理的人的角度来看,yieldfrom、await是什么以及这些对允许有什么用处异步代码?有一个highlyupvoted关于yieldfrom语法和oneexplainingasyncandawait用法的问题,但两者都深入探讨了不同的主题,并没有真正简明地解释底层代码以及它如何适应asyncio。 最佳答案 简答:yieldfrom是等待asyncio协程的老方法。await是一种等待asyncio协程的现代方式。详细回答:Python有生成器——一种特殊的函数,可以生成一系列结

python - loop.create_task、asyncio.async/ensure_future 和 Task 有什么区别?

我对一些asyncio函数有点困惑。我看到有BaseEventLoop.create_task(coro)函数来安排一个协同例程。create_task的文档说它是一个新功能,为了兼容性,我们应该使用asyncio.async(coro)通过再次引用文档,我看到它是asyncio.ensure_future(coro)的别名再次调度协程的执行。与此同时,我一直在使用Task(coro)用于安排协同程序执行,这似乎也可以正常工作。那么,所有这些有什么区别呢? 最佳答案 正如您所注意到的,它们都做同样的事情。asyncio.async必

python - loop.create_task、asyncio.async/ensure_future 和 Task 有什么区别?

我对一些asyncio函数有点困惑。我看到有BaseEventLoop.create_task(coro)函数来安排一个协同例程。create_task的文档说它是一个新功能,为了兼容性,我们应该使用asyncio.async(coro)通过再次引用文档,我看到它是asyncio.ensure_future(coro)的别名再次调度协程的执行。与此同时,我一直在使用Task(coro)用于安排协同程序执行,这似乎也可以正常工作。那么,所有这些有什么区别呢? 最佳答案 正如您所注意到的,它们都做同样的事情。asyncio.async必

python - @asyncio.coroutine 与 async def

使用我见过的asyncio库,@asyncio.coroutinedeffunction():...和asyncdeffunction():...可以互换使用。两者在功能上有区别吗? 最佳答案 是的,使用asyncdef语法的原生协程和使用asyncio.coroutine装饰器的基于生成器的协程之间存在功能差异。根据PEP492,其中引入了asyncdef语法:Nativecoroutineobjectsdonotimplement__iter__and__next__methods.Therefore,theycannotbei

python - @asyncio.coroutine 与 async def

使用我见过的asyncio库,@asyncio.coroutinedeffunction():...和asyncdeffunction():...可以互换使用。两者在功能上有区别吗? 最佳答案 是的,使用asyncdef语法的原生协程和使用asyncio.coroutine装饰器的基于生成器的协程之间存在功能差异。根据PEP492,其中引入了asyncdef语法:Nativecoroutineobjectsdonotimplement__iter__and__next__methods.Therefore,theycannotbei

与Asyncio例外之后重新标记期货

我正在尝试弄清楚如何重新征备一些超时的异步DNS请求(我正在使用UVloop和AIODNS模块)。这是我设置循环的代码:asyncio.set_event_loop_policy(uvloop.EventLoopPolicy())loop=asyncio.get_event_loop()resolver=aiodns.DNSResolver(loop=loop)sem=asyncio.Semaphore(MAX_COUNT)此功能执行查找:asyncdeflookup(name):with(awaitsem):response=awaitresolver.query(name,'A')retu

python - 如何测试 Python 3.4 asyncio 代码?

使用Python3.4asyncio库为代码编写单元测试的最佳方法是什么?假设我想测试一个TCP客户端(SocketConnection):importasyncioimportunittestclassTestSocketConnection(unittest.TestCase):defsetUp(self):self.mock_server=MockServer("localhost",1337)self.socket_connection=SocketConnection("localhost",1337)@asyncio.coroutinedeftest_sends_hands

python - 如何测试 Python 3.4 asyncio 代码?

使用Python3.4asyncio库为代码编写单元测试的最佳方法是什么?假设我想测试一个TCP客户端(SocketConnection):importasyncioimportunittestclassTestSocketConnection(unittest.TestCase):defsetUp(self):self.mock_server=MockServer("localhost",1337)self.socket_connection=SocketConnection("localhost",1337)@asyncio.coroutinedeftest_sends_hands

python - Asyncio.gather 与 asyncio.wait

asyncio.gather和asyncio.wait似乎有类似的用途:我有一堆我想要执行/等待的异步事情(不一定要在下一个开始之前等待一个完成)。它们使用不同的语法,并且在某些细节上有所不同,但对我来说,拥有两个在功能上具有如此巨大重叠的函数似乎非常不符合Python标准。我错过了什么? 最佳答案 虽然在一般情况下类似(“运行并获取许多任务的结果”),但每个函数都有一些针对其他情况的特定功能:asyncio.gather()返回一个Future实例,允许对任务进行高级分组:importasynciofrompprintimport