2011-09-19 65 views
2

我有一個虛擬機跨多個機器,一個管理虛擬機和7-15個工作虛擬機的多節點網絡。我想在管理虛擬機上運行NTP服務器,並讓所有工作虛擬機與冗餘虛擬機同步。與Python精確事件同步

從那裏我打算在每個工作虛擬機上有一個python進程在一個開始日期的任意時間產生一個新線程。當需要產生新線程時,每個進程都會提前知道(即進程何時開始)。

我能想到的一種方法是使機器與NTP同步,從當前時間中減去已知的等待時間,然後調用它們的差值。

僞代碼

for ii in eventTimes: 
    curTime = getCurrentTime() 
    waitTime = ii - curTime 
    usleep(waitTime) 
    spawnEventThread() 

還有的線程之間沒有共享數據。每個線程產生的最短時間爲1秒,並且它們應該足夠簡單以完成他們在那一秒內所做的任何事情。

任何幫助表示讚賞

回答

0

如果你可以運行在管理虛擬機的NTP服務器,你可以打,與純Python代碼NTP服務器,以獲得「大師」的時間,然後使用它作爲一個基地偏移量計算。

>>> import ntplib,datetime 
>>> x = ntplib.NTPClient() 
>>> datetime.datetime.utcfromtimestamp(x.request('master server').tx_time 
datetime.datetime(2011, 9, 19, 17, 59, 24, 679769) 

如果更改getCurrentTime()呼叫你的榜樣到獲取網絡時間的函數,你要善於去。