1

第一个问题: 我正在遍历一大组纬度/经度和日期以查找月亮升起/落下时间。其中一些点靠近两极。以下代码将观察者的日期提前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 块来捕获它并重置日期。有没有更好的办法?

第二个问题: 与第一个相关,库线程安全吗?我将其设置为使用队列和线程模块在单独的线程中一次计算多个日期。

4

1 回答 1

1

第一个答案:日期更改的事实是 PyEphem 中的一个错误,应该在下一个版本发布时修复!目前,手动设置日期似乎是最简单的解决方法。

第二个答案:只要每个线程都有自己的Moon对象Observer,它就应该能够进行自己的计算,而不会破坏任何其他线程的计算。

于 2015-01-22T18:49:10.117 回答