Утилита семафора командной строки - PullRequest
2 голосов
/ 29 апреля 2010

Я хочу написать утилиту командной строки, которую можно использовать для синхронизации выполнения программ на разных консолях.

Console A: 
$ first_program && semaphore -signal

Console B:
$ semaphore -wait && second_program

Первая программа занимает много времени. Вторая программа может быть запущена только после завершения первой программы.

Какой объект синхронизации мне нужен для реализации этого?

Ответы [ 2 ]

5 голосов
/ 29 апреля 2010

Вам не нужно использовать Python для этого. Учитывая, что вы используете Unix, попробуйте это:

Сначала создайте трубу для семафора.

mknod /tmp/semaphore p

Затем программы:

Console A:
$ first_program && echo a > /tmp/semaphore

Console B:
$ read < /tmp/semaphore && second_program

На самом деле, этот метод работает в обоих направлениях. Чтение будет блокироваться до тех пор, пока не произойдет запись, и наоборот.

0 голосов
/ 29 апреля 2010

Если они находятся на одной машине, первая программа может касаться временного файла.

В python есть модуль Gamin, который позволит вашей второй программе сидеть и ждать, не связывая ресурсы.Это не занятое ожидание, или что-то делать со сном или чем-то подобным.

...