python asyncio永远运行\u或在为True时运行

python asyncio永远运行\u或在为True时运行,python,python-asyncio,Python,Python Asyncio,我应该在代码中替换而为True(没有asyncio),还是应该使用asyncio事件循环来实现相同的结果 目前,我使用连接到zeromq的某种“worker”,接收一些数据,然后对外部工具(服务器)执行一些请求(http)。所有内容都是用普通的阻塞IO编写的。使用asyncio事件循环来摆脱,而True:…有意义吗 将来它可能完全用asyncio重写,但现在我恐怕要从asyncio开始 我是asyncio新手,并不是所有库的部分都清楚:) Thx:)如果您想开始使用不支持异步IO代码的库编写异步

我应该在代码中替换
而为True
(没有asyncio),还是应该使用asyncio事件循环来实现相同的结果

目前,我使用连接到zeromq的某种“worker”,接收一些数据,然后对外部工具(服务器)执行一些请求(http)。所有内容都是用普通的阻塞IO编写的。使用asyncio事件循环来摆脱
,而True:…
有意义吗

将来它可能完全用asyncio重写,但现在我恐怕要从asyncio开始

我是asyncio新手,并不是所有库的部分都清楚:)


Thx:)

如果您想开始使用不支持异步IO代码的库编写异步IO代码,可以使用

这允许您将可调用的提交给或,并异步获取结果。默认执行器是由5个线程组成的线程池

例如:

# Python 3.4
@asyncio.coroutine
def some_coroutine(*some_args, loop=None):
    while True:
        [...]
        result = yield from loop.run_in_executor(
            None,  # Use the default executor
            some_blocking_io_call, 
            *some_args)
        [...]

# Python 3.5
async def some_coroutine(*some_args, loop=None):
    while True:
        [...]
        result = await loop.run_in_executor(
            None,  # Use the default executor
            some_blocking_io_call, 
            *some_args)
        [...]

loop = asyncio.get_event_loop()
coro = some_coroutine(*some_arguments, loop=loop)
loop.run_until_complete(coro)

如果要尝试使用
asyncio
,只需使用
aiozmq
和其他
asyncio
友好库完全重写程序即可。尝试将阻塞库与asyncio事件循环混合使用,特别是如果您只是为了删除
而执行True:
循环,这通常不是一个好主意。您将如何更改代码以永远运行
某些协同程序?您可以使用simple
while True:
或其他可能的异步方式?@qwetty在协同程序中使用
while True
是非常好的,只要您在内部执行异步调用。比如说,看看这个,谢谢。这就是我需要的。关于while的确认:)