Я работаю над проверкой концепции zeroMQ, которая включает главный процесс, который публикует управляющие команды, а также извлекает и извлекает данные из любого числа рабочих процессов.
Похоже, что при инициализации мастер и рабочие (отдельные процессы) иногда не синхронизируются, если я запускаю их с помощью сценария оболочки. Тем не менее, я никогда не видел этого, если я запускаю их в любом порядке вручную (в отдельных окнах консоли). Я начинаю рассматривать добавление sleep () после того, как каждый процесс связывается / соединяется с сокетами, чтобы избежать этого очевидного heisenbug - но мне также интересно, просто ли я глупый. Любой совет?
Вот как выглядит сценарий оболочки, который иногда дает сбой. Мастер разговаривает с рабочими, используя как PUB, так и PUSH, а также возвращает информацию, используя гнездо PULL. Я думаю, что heisenbug вызывается, когда 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
Я чувствую, что изменяю, если использую сон ()