使用asyncio和阻止代码

时间:2017-08-27 20:49:22

标签: python iterator python-asyncio

首先,我查看了thisthisthis,虽然第一个有一些有用的信息,但这里没有相关性,因为我正在尝试迭代值。

以下是我希望能够做的事情的一个例子:

class BlockingIter:
    def __iter__(self):
        while True:
            yield input()

async def coroutine():
    my_iter = BlockingIter()
    #Magic thing here
    async for i in my_iter:
        await do_stuff_with(i)

我该怎么做?

(注意,BlockingIter实际上是我正在使用的库(chatexchange),所以可能还有其他一些并发症。)

1 个答案:

答案 0 :(得分:3)

正如@vaultah所说并在docsawaiting中解释的那样,executorawait loop.run_in_executor(None, next, iter_messages))可能就是你想要的。