2014-10-17 19 views
1

第一個問題: 我正在循環大量的經緯度和日期以查找月亮上升/設置時間。其中一些點靠近兩極。 下面的代碼推進觀察者對NeverUpErrorpyephem在NeverUpError上推進觀察者日期

moon = ephem.Moon() 
obs = ephem.Observer() 
obs.lat='89' 
obs.lon='0' 
obs.date = ephem.Date('2014/01/01') 
print obs.date 
# 2014/1/1 00:00:00 
obs.next_rising(moon) 
# Traceback (most recent call last): 
# ... 
# ephem.NeverUpError: 'Moon' transits below the horizon at 2014/1/1 12:04:01 
print obs.date 
# 2014/1/1 12:04:01 

日期有沒有一種方法調用obs.next_rising(moon)前檢查呢?我想在觀察中保留這個日期。我目前使用try/except塊來捕捉它並重置日期。有沒有更好的辦法?

第二個問題: 相關第一,是庫線程安全嗎?我將它設置爲使用Queue和線程模塊在單獨的線程中一次計算多個日期。

回答

1

第一個答案:的事實日期改變是PyEphem一個錯誤的下一個版本發佈時應該是固定的!目前,手動設置日期似乎是最簡單的解決方法。

第二個答案:只要每個線程都有自己的MoonObserver對象,它應該能夠做到自己的計算,而不破壞其他任何線程。