问题标签 [zeromq]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2250 浏览

python - Python多处理问题?

我有一个包含 500 个输入文件的文件夹(所有文件的总大小约为 500 [MB])。

我想编写一个python执行以下操作的脚本:

(1)将所有输入文件加载到内存

(2)python初始化一个稍后将使用的空列表...参见项目符号(4)

(3)启动 15 个不同的(独立的)进程:每个进程都使用相同的输入数据 [from (1)] -- 但使用不同的算法对其进行处理,从而产生不同的结果

(4)我希望 [来自步骤(3)] 的所有独立进程将它们的输出存储在同一个python列表中 [在步骤 中初始化的相同列表(2)]

一旦所有 15 个进程都完成了它们的运行,我将拥有one python list包括所有 15 个独立进程的结果。

我的问题是,是否可以有效地完成上述工作python?如果是这样,您能否提供一个方案/示例代码来说明如何做到这一点?

注意#1:我将在强大的多核服务器上运行它;所以这里的目标是使用所有处理能力,同时在所有独立进程之间共享一些内存 { input data, }。output list

注意#2:我在一个Linux环境中工作

0 投票
4 回答
17615 浏览

zeromq - ZeroMQ 消息大小长度限制?

假设几台机器正在使用python'szeroMQ 客户端进行交互。

这些消息自然地格式化为字符串。

消息(字符串)的长度是否有限制?

0 投票
3 回答
1258 浏览

python - 使用 ZeroMQ / NFS 分发实时市场数据?

假设您有一台从交易所获取实时股票价格的机器。这些价格需要以最快的方式传输到您网络中的 50 台其他机器上,以便每台机器都可以对数据进行自己的处理。

将数据发送到其他 50 台机器的最佳/最快方式是什么?

我正在寻找一种可以作为编程语言linux使用的解决方案。python我的一些想法是:

(1)python's ZeroMQ使用模块发送到其他机器

(2)将数据保存到共享文件夹并让 50 台机器使用NFS

还有其他想法吗?

0 投票
2 回答
3686 浏览

python - 多核 Python:多处理 Vs。零MQ?

我想编写python将数据集加载为输入并对其进行分析的代码。

将有 5 个并行进程以独特的方式分析数据——每个进程将以不同的方式处理数据。

在任何处理开始之前,master脚本(将“启动”所有不同子流程的脚本)将定义一个空列表。

我希望所有不同的进程都将它们的输出写入上述相同的列表(意思是,每个进程都将能够直接操作master脚本中定义的列表)。

这意味着,如果process1更改了该列表的第一个值,所有其他进程(在运行时)将看到该列表的第一个值已更改。


我感觉python可以使用 2 个不同的模块来解决这个问题:multiprocessingzeroMQ.

在这种情况下,是否有任何理由更喜欢一个与另一个?如果——而不是master在同一台服务器上运行脚本——我将在不同(多个)服务器之间拆分进程,你的答案会改变吗?

(如果这很重要,我正在使用 a Linux

0 投票
6 回答
25840 浏览

java - zeromq 与 Python 与 Java 的 node.js 性能

我使用 node.js、Python 和 Java 为 zeromq 编写了一个简单的回显请求/回复测试。该代码运行一个包含 100K 请求的循环。该平台是 5yo MacBook Pro,具有 2 个内核和 3G RAM,运行 Snow Leopard。

node.js 始终比其他两个平台慢一个数量级。

爪哇: real 0m18.823s user 0m2.735s sys 0m6.042s

Python: real 0m18.600s user 0m2.656s sys 0m5.857s

节点.js: real 3m19.034s user 2m43.460s sys 0m24.668s

有趣的是,对于 Python 和 Java,客户端和服务器进程都使用大约一半的 CPU。node.js 的客户端使用了大约一个完整的 CPU,而服务器使用了大约 30% 的 CPU。客户端进程也有大量的页面错误,让我相信这是一个内存问题。此外,在 10K 请求时,节点仅慢 3 倍;它运行的时间越长,它的速度肯定越慢。

这是客户端代码(请注意, process.exit() 行也不起作用,这就是为什么我在使用 time 命令之外还包括一个内部计时器):

服务器代码:

为了比较,Python客户端和服务器代码:

以及 Java 客户端和服务器代码:

我想喜欢 node,但是由于代码大小、简单性和性能方面的巨大差异,我现在很难说服自己。

那么,以前有没有人见过这样的行为,或者我在代码中做了一些愚蠢的事情?

0 投票
2 回答
1552 浏览

c - 如何将 ZeroMQ 套接字集成到 glib 主循环中?

我想将 ZeroMQ 套接字添加到 glib 程序中。

遗憾的是,zmq 套接字是不可poll()用的,他们给出了他们的实现,这使旧的poll()func 重载。我怎样才能有效地将它集成到主循环中?我尝试使用他们的 poll ( zmq_poll()) 而不是默认的,但是除了将其设置为global.

定义一个新的GSource工作,但它可以获得高 CPU 使用率(通过设置timeout = 0)或任意轮询超时(例如设置timeout = 100为至少每 100 毫秒轮询一次),这并不是真正有效的,因为存在轮询的可能性。

0 投票
3 回答
14574 浏览

python - Python zeromq——一个订阅者的多个发布者?

我想编写一个执行以下操作的python脚本(称为parent):

(1)定义一个多维numpy数组

(2) forks 10 种不同的python脚本(称它们为孩子)。它们中的每一个都必须能够在任何单个时间点从(1)获取数组read的内容(只要它们还活着)。numpy

(3)每个脚本都会做自己的工作(孩子们不要互相分享任何信息)

(4)在任何时间点,脚本必须能够接受来自其所有脚本的消息。这些消息将由父级解析并导致(1)numpy中的数组发生更改。


python在环境中工作时,我该如何处理Linux?我想使用zeroMQ并让父母成为单个订阅者,而孩子们都将成为发布者;这有意义还是有更好的方法?

另外,如何让所有级连续读取numpy级定义的数组的内容?

0 投票
1 回答
3458 浏览

python - python & zeroMQ——处理大消息的能力?

我想python用来构建一个类似于zeroMQ呼吸机/水槽方案的应用程序

假设我们有10 个 Worker,它们都运行在同一个多核服务器上。

假设每2[sec]左右,每个WorkerSink推送一条大小为 5[MB] 的消息。因此,Sink必须每2[sec]左右处理总共 50[MB] (= 10 x 5[MB] )的数据。

如果这 10 个工人在不同的机器上,我知道网络可能是一个潜在的瓶颈。

如果这 10 个工人必须将他们的数据写入磁盘 (I/O),我知道磁盘可能是一个潜在的瓶颈。

鉴于所有10 名工人同一台机器上,人们应该期待什么瓶颈?

例如,相同的10 个 Worker可以每2[sec]左右推送一条大小为 10[MB] 的消息吗?他们可以每2[sec]左右推送一条大小为 20[MB] 的消息吗?

有什么zmq限制?

在环境中使用python和使用时会遇到哪些类型的瓶颈?zeroMQLinux

0 投票
2 回答
8087 浏览

python - Python ZeroMQ 推/拉——丢失消息?

我正在尝试使用pythoninzeroMQ模式,每隔几秒PUSH / PULL发送一次大小为4[MB]的消息。

出于某种原因,虽然看起来所有消息都已发送,但似乎只有其中一些消息已被服务器接收。我在这里想念什么?

这是客户端的代码-client.py

这是服务器的代码——server.py

我错过了什么?如何保证消息始终发送且不丢失?

以防万一,我使用的是Ubuntu 10.0432 位 Core Duo 机器和 2[GB] RAM。

注意:我尝试使用相同的示例RabbitMQ,一切正常 - 没有消息丢失。我很困惑,因为我经常听到赞美zeroMQ。为什么在RabbitMQ成功的地方失败了?

0 投票
3 回答
10063 浏览

zeromq - 在 zeromq 中结合 pub/sub 和 req/rep

客户端如何使用 zeromq 订阅和收听回复?也就是说,在客户端,我想运行一个循环,它只接收消息并有选择地发送请求,而在服务器端,我大部分时间都想发布,但有时也接收请求。看起来我必须有两个不同的套接字 - 一个用于每种通信模式。是否有可能避免这种情况,并且在服务器端从 zeromq 回调线程上的套接字接收“请求通知”,同时在我自己的线程中将消息推送到套接字?