程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

在Python中通过stdin / stdout / pipes进行通信的预定义协议?

发布于2020-02-25 19:57     阅读(900)     评论(0)     点赞(9)     收藏(4)


我有一个进程,该进程创建了几个子进程,需要用它们在Python 2.5中进行交流。我使用subprocess模块​​启动进程,将stdin和stdout设置为subprocess.PIPE。到目前为止,一切都很好。

然后在循环中,对每个子过程的stdout流运行select.select(),等待它们告诉我它们已经准备好。然后,我写信给他们的stdin,让他们工作并重复该过程。

目前,我只是使用stdin.write和stdout.readline进行通信。但是,我希望能够在流程之间传递复杂的消息。简单的换行符终止的消息是不够的(除非我大步向前以某种方式转义消息中的新行)。我在想可以为所有消息加上字节长度的前缀,以便使我的消息看起来像这样:

6:foobar

但这使我想到了一个问题:是否已经存在类似的东西?我真的不想在这里重新发明轮子。我想要一个可以告诉我何时有完整消息的库,然后将其交给我。还有许多其他协议可以通过各种方式(TCP,消息队列服务器,HTTP等)来执行此类操作,但是对于我的用例而言,它们都是过大的。在Python的进程之间进行消息传递的正确方法是什么?


解决方案


您可以使用jsonpickle对包含消息的数据结构进行编码,然后在另一端使用相同的结构读取消息。



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:https://www.pythonheidong.com/blog/article/233628/c8d5b89651388b97ce26/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

9 0
收藏该文
已收藏

评论内容:(最多支持255个字符)