如何从pyzmq中的生成器发送味精?

Posted

技术标签:

【中文标题】如何从pyzmq中的生成器发送味精?【英文标题】:how to send msg from generator in pyzmq? 【发布时间】:2021-05-10 13:07:12 【问题描述】:

来自:https://github.com/zeromq/pyzmq/issues/1290

def encap_msg(msg):
    yield b'Procotol v1`
    yield uuid.uuid4().bytes
    yield from msg

socket.send_multipart(encap_msg(msg))

当我运行这段 sn-p 部分代码时,它引发了一个错误。

File "xxxxxx/zmq/sugar/socket.py", line 439, in send_multipart
    for msg in msg_parts[:-1]:
'generator' object is not subscriptable

根据文档,msg_parts是可迭代的,generators是可迭代的。

例如,在 TTS 中,请求是文本,响应是流音频,如何使用 pyzmq/ 从生成器一一发送音频帧

【问题讨论】:

【参考方案1】:

问: 如何在pyzmq中从generator发送msg?

一个: 直到pyzmq-language wrapper 开始为这种语法糖化提供工作代码,到目前为止它似乎还没有这样做,如 2022 年第一季度所见, 有人可能会做这样的事情:

...
with encap_msg( msg )      as aGeneratorINSTANCE: # tradeoffs of small-[TIME] add-on cost
     try:                                         #          for safe-[SPACE] savings
         for aMessageFRAME in aGeneratorINSTANCE: #
             socket.send_multipart( aMessageFRAME,# Hopes with us to see Zero-copy effect
                                    zmq.SNDMORE ) #
     except:                                      #
             pass                                 #
     finally:                                     # Dirty? Perhaps, but works safe
             socket.send_multipart( "",           #        one (empty) tail message
                                    zmq.DONTWAIT )# Not to remain hang waiting on API
     pass                                         #        hope you enjoy this
...

【讨论】:

以上是关于如何从pyzmq中的生成器发送味精?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Unity C# 中的操纵杆控制器生成器获取数据

如何将midi从java程序发送到OSX上的IAC总线

如何以多种语言发送从核心银行系统生成的警报?

在 c# 中创建/打开从路径到新 Outlook.MailItem 的现有味精

如何从 iOS 中的十六进制/二进制(原始数据)值生成音频文件?

Zeromq 内存泄漏 (pyzmq)