Вот что я написал сейчас для синхронизации нескольких тестовых клиентов:
#!/usr/bin/python
import time
import sys
now = time.time()
mod = float(sys.argv[1])
until = now - now % mod + mod
print "sleeping until", until
while True:
delta = until - time.time()
if delta <= 0:
print "done sleeping ", time.time()
break
time.sleep(delta / 2)
Этот сценарий спит до следующего "округленного" или "резкого" времени.
Простой вариант использования -запустите ./sleep.py 10; ./test_client1.py
в одном терминале и ./sleep.py 10; ./test_client2.py
в другом.
Вы хотите убедиться, что часы на ваших машинах синхронизированы.
В качестве альтернативы, используйте один из этих параметров в tcpdump, используйте что-нибудьэто дает вам полную метку времени.
-t
Don't print a timestamp on each dump line.
-tt
Print an unformatted timestamp on each dump line.
-ttt
Print a delta (micro-second resolution) between current and previous line on each dump line.
-tttt
Print a timestamp in default format proceeded by date on each dump line.
-ttttt
Print a delta (micro-second resolution) between current and first line on each dump line.
Наконец, вы можете запустить что-то вроде execnet для запуска команд на нескольких машинах (почти) одновременно.