据我所知,对于刚启动的 Python 脚本来说,没有好的方法可以从已经运行的 Python 实例中访问值。但是,您可以尝试一些解决方法。
如果您的天气上传脚本持续运行是可以接受的,您可以将其构造为如下所示:
import time
import rainmodule
import windmodule
# etc
def start():
# instantiate classes so you can keep track of state
rain = rainmodule.RainCollection()
wind = windmodule.WindCollection()
# etc
prev_time = time.time()
while True:
rain.loop()
wind.loop()
# etc
now = time.time()
if now - prev_time > (60*60*5):
prev_time = now
totalrainlasthour = rain.totalrainlasthour
winddata = wind.data
# upload code here
if __name__ == '__main__':
start()
此方法假定您的每个数据收集模块都可以修改为在“主”while
循环中迭代运行。
如果您无法调整代码以适应这种格式,(或者loop
某些模块的方法需要很长时间才能执行),那么您可以使用多处理或线程模块将每个模块作为进程启动,并使用一些进行通信同步数据结构或队列。
另一种解决方案可能是创建某种数据库(Python 与sqlite捆绑在一起,可以工作),并将每个脚本写入该数据库。这样,任何脚本都可以运行并从数据库中获取所需的内容,而无需绑定到其他数据收集模块。
使用 sqlite 的唯一潜在问题是,由于它是轻量级的,它一次只支持一个写入器,因此如果您对数据库进行大量更改和添加,它最终可能会成为瓶颈。