问题标签 [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.
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
环境中工作
zeromq - ZeroMQ 消息大小长度限制?
假设几台机器正在使用python's
zeroMQ 客户端进行交互。
这些消息自然地格式化为字符串。
消息(字符串)的长度是否有限制?
python - 使用 ZeroMQ / NFS 分发实时市场数据?
假设您有一台从交易所获取实时股票价格的机器。这些价格需要以最快的方式传输到您网络中的 50 台其他机器上,以便每台机器都可以对数据进行自己的处理。
将数据发送到其他 50 台机器的最佳/最快方式是什么?
我正在寻找一种可以作为编程语言linux
使用的解决方案。python
我的一些想法是:
(1)python's
ZeroMQ
使用模块发送到其他机器
(2)将数据保存到共享文件夹并让 50 台机器使用NFS
还有其他想法吗?
python - 多核 Python:多处理 Vs。零MQ?
我想编写python
将数据集加载为输入并对其进行分析的代码。
将有 5 个并行进程以独特的方式分析数据——每个进程将以不同的方式处理数据。
在任何处理开始之前,master
脚本(将“启动”所有不同子流程的脚本)将定义一个空列表。
我希望所有不同的进程都将它们的输出写入上述相同的列表(意思是,每个进程都将能够直接操作master
脚本中定义的列表)。
这意味着,如果process1
更改了该列表的第一个值,所有其他进程(在运行时)将看到该列表的第一个值已更改。
我感觉python
可以使用 2 个不同的模块来解决这个问题:multiprocessing
和zeroMQ
.
在这种情况下,是否有任何理由更喜欢一个与另一个?如果——而不是master
在同一台服务器上运行脚本——我将在不同(多个)服务器之间拆分进程,你的答案会改变吗?
(如果这很重要,我正在使用 a Linux
)
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,但是由于代码大小、简单性和性能方面的巨大差异,我现在很难说服自己。
那么,以前有没有人见过这样的行为,或者我在代码中做了一些愚蠢的事情?
c - 如何将 ZeroMQ 套接字集成到 glib 主循环中?
我想将 ZeroMQ 套接字添加到 glib 程序中。
遗憾的是,zmq 套接字是不可poll()
用的,他们给出了他们的实现,这使旧的poll()
func 重载。我怎样才能有效地将它集成到主循环中?我尝试使用他们的 poll ( zmq_poll()
) 而不是默认的,但是除了将其设置为global
.
定义一个新的GSource
工作,但它可以获得高 CPU 使用率(通过设置timeout = 0
)或任意轮询超时(例如设置timeout = 100
为至少每 100 毫秒轮询一次),这并不是真正有效的,因为存在轮询的可能性。
python - Python zeromq——一个订阅者的多个发布者?
我想编写一个执行以下操作的python
脚本(称为parent):
(1)定义一个多维numpy
数组
(2) forks
10 种不同的python
脚本(称它们为孩子)。它们中的每一个都必须能够在任何单个时间点从(1)获取数组read
的内容(只要它们还活着)。numpy
(3)每个子脚本都会做自己的工作(孩子们不要互相分享任何信息)
(4)在任何时间点,父脚本必须能够接受来自其所有子脚本的消息。这些消息将由父级解析并导致(1)numpy
中的数组发生更改。
python
在环境中工作时,我该如何处理Linux
?我想使用zeroMQ
并让父母成为单个订阅者,而孩子们都将成为发布者;这有意义还是有更好的方法?
另外,如何让所有子级连续读取父numpy
级定义的数组的内容?
python - python & zeroMQ——处理大消息的能力?
我想python
用来构建一个类似于zeroMQ
呼吸机/水槽方案的应用程序
假设我们有10 个 Worker,它们都运行在同一个多核服务器上。
假设每2[sec]左右,每个Worker向Sink推送一条大小为 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
和使用时会遇到哪些类型的瓶颈?zeroMQ
Linux
python - Python ZeroMQ 推/拉——丢失消息?
我正在尝试使用python
inzeroMQ
模式,每隔几秒PUSH / PULL
发送一次大小为4[MB]的消息。
出于某种原因,虽然看起来所有消息都已发送,但似乎只有其中一些消息已被服务器接收。我在这里想念什么?
这是客户端的代码-client.py
这是服务器的代码——server.py
我错过了什么?如何保证消息始终发送且不丢失?
以防万一,我使用的是Ubuntu 10.04
32 位 Core Duo 机器和 2[GB] RAM。
注意:我尝试使用相同的示例RabbitMQ
,一切正常 - 没有消息丢失。我很困惑,因为我经常听到赞美zeroMQ
。为什么在RabbitMQ
成功的地方失败了?
zeromq - 在 zeromq 中结合 pub/sub 和 req/rep
客户端如何使用 zeromq 订阅和收听回复?也就是说,在客户端,我想运行一个循环,它只接收消息并有选择地发送请求,而在服务器端,我大部分时间都想发布,但有时也接收请求。看起来我必须有两个不同的套接字 - 一个用于每种通信模式。是否有可能避免这种情况,并且在服务器端从 zeromq 回调线程上的套接字接收“请求通知”,同时在我自己的线程中将消息推送到套接字?