首页 / PYTHON / Python中的进程间通信
Python中的进程间通信
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python中的进程间通信,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1385字,纯文字阅读大概需要2分钟。
内容图文
![Python中的进程间通信](/upload/InfoBanner/zyjiaocheng/953/5fbaae84578c460982dee6f8ec62d08b.jpg)
在两个不同的python进程之间进行进程间通信的干净而优雅的方法是什么?我目前在操作系统中使用命名管道,但感觉有点hacky.我用dbus服务重写了我的东西,但是看起来当通过SSH会话远程运行代码时,它现在尝试初始化X11,这对于我想做的事情来说似乎完全没有必要(它们与GUI无关).所以也许dbus有点太重量了.我正准备再次使用套接字进行重新设计,但它看起来很低级,所以我想可能有一个更高级别的模块我可以导入和使用,我根本就不知道它的名字,我想我应该问SO第一..
我的要求是能够运行python foo.py并让那个进程就像守护进程一样,并且能够使用python foo.py –bar向它发送消息.后一个调用应该只是向现有进程发送一个消息并终止,可能返回代码0表示成功或其他失败(因此需要进行一些双向通信).
解决方法:
multiprocessing library提供了包装套接字的listeners and clients,允许您传递任意python对象.
您的服务器可以侦听接收python对象:
from multiprocessing.connection import Listener
address = ('localhost', 6000) # family is deduced to be 'AF_INET'
listener = Listener(address, authkey='secret password')
conn = listener.accept()
print 'connection accepted from', listener.last_accepted
while True:
msg = conn.recv()
# do something with msg
if msg == 'close':
conn.close()
break
listener.close()
您的客户端可以发送命令作为对象:
from multiprocessing.connection import Client
address = ('localhost', 6000)
conn = Client(address, authkey='secret password')
conn.send('close')
# can also send arbitrary objects:
# conn.send(['a', 2.5, None, int, sum])
conn.close()
内容总结
以上是互联网集市为您收集整理的Python中的进程间通信全部内容,希望文章能够帮你解决Python中的进程间通信所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。