Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
两个python脚本之间的通信_Python_Inter Process Communicat - Fatal编程技术网

两个python脚本之间的通信

两个python脚本之间的通信,python,inter-process-communicat,Python,Inter Process Communicat,方法问题: 我有一个“主”python脚本,它在我的系统的无限循环上运行,我想偶尔用一些其他python脚本向它发送信息(例如json数据字符串),这些脚本稍后将由我自己或其他程序启动,并在发送字符串后结束 我不能在这里使用子进程,因为我的主脚本不知道其他脚本何时运行以及它们将执行什么代码 我正在考虑让主脚本在本地端口上侦听,并让其他脚本在该端口上发送字符串,但有更好的方法吗?zeromq:-是进程间通信imho的最佳解决方案,并且对python有一个出色的绑定:,因为“主”脚本看起来像一个服务

方法问题:

我有一个“主”python脚本,它在我的系统的无限循环上运行,我想偶尔用一些其他python脚本向它发送信息(例如json数据字符串),这些脚本稍后将由我自己或其他程序启动,并在发送字符串后结束

我不能在这里使用子进程,因为我的主脚本不知道其他脚本何时运行以及它们将执行什么代码

我正在考虑让主脚本在本地端口上侦听,并让其他脚本在该端口上发送字符串,但有更好的方法吗?

zeromq:-是进程间通信imho的最佳解决方案,并且对python有一个出色的绑定:

,因为“主”脚本看起来像一个服务,您可以使用web API对其进行增强。这是一个完美的解决方案。通过这些附加代码,您的python脚本能够接收并处理请求:

import json

from bottle import run, post, request, response

@post('/process')
def my_process():
  req_obj = json.loads(request.body.read())
  # do something with req_obj
  # ...
  return 'All done'

run(host='localhost', port=8080, debug=True)
客户端脚本可以使用httplib向服务器发送消息并读取响应:

import httplib

c = httplib.HTTPConnection('localhost', 8080)
c.request('POST', '/process', '{}')
doc = c.getresponse().read()
print doc
# 'All done'

如果您对实现Mike在Python3.x中介绍的客户端脚本感兴趣,您将很快发现没有可用的httplib。幸运的是,库http.client也做了同样的事情

否则,它是相同的:

import http.client
c = http.client.HTTPConnection('localhost', 8080)
c.request('POST', '/process', '{}')
doc = c.getresponse().read()
print(doc)

虽然这是旧的,但我想我会发布这篇文章,因为我今天有一个类似的问题,但使用服务器。

套接字是一个选项,但根据您使用的操作系统,还有其他选项。非常感谢!我不想使用http甚至tcp,因为我认为我的问题与网络无关,使用zeromq的ipc解决方案是完美的:)享受吧!三年前,这对我来说是一颗银弹这个库是否轻量级,我将每秒发送100条消息?如何从客户端python脚本向该服务发送请求?@Noah在答案中看到我的补充内容