【发布时间】:2012-02-29 03:27:04
【问题描述】:
我正在做一个 zeroMQ 概念证明,它涉及一个主进程,该进程发布控制命令并从任意数量的工作进程推送和拉取数据。
似乎在初始化时,如果我使用 shell 脚本启动 master 和 worker(单独的进程)有时会不同步。但是,如果我以任何顺序手动启动它们(在单独的控制台窗口中),我从未见过这种情况。我开始考虑在每个进程绑定/连接到套接字之后添加一个 sleep() 以避免这种明显的 heisenbug - 但我也想知道我是否只是愚蠢。有什么建议吗?
下面是偶尔失败的 shell 脚本的样子。主人使用 PUB 和 PUSH 与工人交谈,并使用 PULL 套接字获取信息。我认为 heisenbug 是由于某个工人有时看不到来自 master 的 PUB 消息引起的。
echo "starting worker A in background"
python pWorkerA.py > /tmp/A.out &
echo "starting worker B in background"
python pWorkerB.py > /tmp/B.out &
echo "starting master"
python abMaster.py
如果我使用 sleep(),我觉得我在作弊
【问题讨论】:
-
遗憾的是,我只是尝试在套接字初始化后在所有进程的顶部添加一个 sleep(0.1) ,这似乎使问题消失了。我对此不满意...
标签: zeromq