栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何集成Python mido和asyncio?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何集成Python mido和asyncio?

mido
提供了一个基于回调的API,该API将从另一个线程中调用回调。回调的实现可以通过调用与asyncio通信
loop.call_soon_threadsafe
。请注意,您将无法仅设置a的值,
Future
因为回调将被多次调用,并且future只能被设置一次-这意味着一次性计算。

多次调用回调的常见模式是将事件推送到asyncio队列,并在asyncio代码中弹出事件。通过将队列公开为异步迭代器,可以更加方便。此功能使过程自动化:

def make_stream():    loop = asyncio.get_event_loop()    queue = asyncio.Queue()    def callback(message):        loop.call_soon_threadsafe(queue.put_nowait, message)    async def stream():        while True: yield await queue.get()    return callback, stream()

make_stream
返回两个对象:

  • 一个 回调 ,您可以传递给
    mido.open_input()
  • 流,您可以对其进行迭代
    async for
    以获取新消息

每当mido在其后台线程中调用回调时,

asyncfor
在流上迭代的asyncio循环都将唤醒一个新项。有效地
make_stream
将线程回调转换为异步迭代器。例如(未测试):

async def print_messages():    # create a callback/stream pair and pass callback to mido    cb, stream = make_stream()    mido.open_input(callback=cb)    # print messages as they come just by reading from stream    async for message in stream:        print(message)


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/662388.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号