- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个 Python 脚本,我在其中绑定(bind)了多个(例如 5 个)ZMQ 接收器套接字,如下所示:
receiver_1 = context.socket(zmq.PULL)
receiver_1.bind("tcp://*:5555")
...
receiver_5 = context.socket(zmq.PULL)
receiver_5.bind("tcp://*:5559")
receivers = [receiver_1, ..., receiver_5]
然后我启动一些 Google Compute Engine 实例,它们连接相应的发送方套接字。
我想并行地从这些套接字中提取数据,因此我尝试使用多处理池来实现。代码看起来像这样:
def recv_result(i):
result_str = receivers[i].recv()
return cPickle.loads(result_str)
pool = multiprocessing.Pool()
while True:
results = pool.map(recv_result, [i for i in range(len(receivers))])
# break when all results have been received
...
我在运行脚本时遇到的错误如下所示:
Traceback (most recent call last):
...
File ...
results = pool.map(recv_result, [i for i in range(len(receivers))])
File "/usr/lib/python2.7/multiprocessing/pool.py", line 227, in map
return self.map_async(func, iterable, chunksize).get()
File "/usr/lib/python2.7/multiprocessing/pool.py", line 528, in get
raise self._value
zmq.error.ZMQError: Interrupted system call
我也尝试过使用 multiprocessing.Process 实现相同的功能,但我得到了本质上相同的错误,尽管方式更加困惑。
我想做的是更有效地从我的 GCE 实例接收所有结果,因为我发现这是我脚本中的瓶颈(在我当前的工作实现中,我只有一个接收器套接字,并且它连续地接收来自所有 GCE 实例的结果)。如果有人能指出我当前代码中的错误,或者任何关于实现我的目标的更好方法的建议,我们将不胜感激!
最佳答案
一些提示:
关于Python ZMQ 和多处理导致 zmq.error.ZMQError : Interrupted system call,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24404198/
我正在使用 zeromq 开发一个动态应用程序,其运行方式类似于 upnp 协议(protocol)(客厅设备的自动配置和自动发现)。 为此,我使用 zeromq 分发消息,我的问题是当我创建套接字并
我正在测试 Plotly Dash 作为一种可能的仪表板工具。 我正在尝试运行文档中找到的图表之一:https://plotly.com/python/bar-charts/ import dash
我在我的程序中遇到了这个错误: Traceback (most recent call last): File "scriptA.py", line 17, in socketPub.bind("t
这个问题已经有答案了: 奥 git _a (4 个回答) 奥 git _a (7 个回答) 已关闭 1 年前。 我正在尝试在这样的 flask 笔记本中运行 iPython 应用程序的最简单演示。 f
使用 REQ-REP 模式,我尝试使用轮询请求多个带有超时的 clients ,这样,如果 server 检测到它无法从第一个 client 接收消息,它将超时并转到下一个 client 。 但似乎在
我对 ZeroMQ 非常陌生,并试图构建一个非常基本的消息传递系统。该代码很大程度上基于来自 here 的示例。有一些曲折 出于某种原因,在最后一条消息到达 frontend 之后socket ( h
我有一个 Python 脚本,我在其中绑定(bind)了多个(例如 5 个)ZMQ 接收器套接字,如下所示: receiver_1 = context.socket(zmq.PULL) receive
我在运行 PAIR 时按了 Ctrl-C与 ZMQ 的模式(非阻塞客户端服务器)连接。后来当我尝试运行 REQ-REP 时(阻塞客户端单服务器连接)模式,我不断收到 Address already i
我正在使用 papermill 库同时使用多处理运行多个笔记本。 这发生在 Python 3.6.6、Red Hat 4.8.2-15 上的 Docker 容器中。 但是,当我运行 python 脚本
我正在尝试在 Python 中使用带有 ZeroMQ 的 IPC 协议(protocol)。 import sys import time from random import randint imp
在我的应用程序中,我正在创建 2 个套接字并进行尝试/除此之外: try: socketA.connect("tcp://localhost:5557") socketB.bind("
我是一名优秀的程序员,十分优秀!