python - 如何将实时数据从一个 Python 脚本传输到另一个?
问题描述
目前我正在编写一个具有 2 个单独文件 Main.py 和 App.py 的程序,Main.py 接收距离和温度等读数并将其写入名为 data.txt 和 App.py 的文件中,然后从文本文件中读取.
#main.py
def scan():
global object_temp, close_enough, real_distance #close enough writes true is someone is near
while True:
f=open("data.txt","a+")
a=str(scan())+"\n"
f.write(a):
log.log(a)
f.close()
#data.txt
#imagine this but with almost 60000 line each time I run it as it's printing every second
[26.03, 30.91, 126.5, False]
[25.97, 30.89, 125.69, False]
[25.97, 30.89, 124.74, False]
.
.
etc
#app.py
def getValues():
global prevValues
f=open("data.txt","r")
latestValue = str(f.read())
f.close()
#log.log(latestValue,"LATEST VALUES")
latestValue = latestValue.split("\n")[-2].strip('][').split(', ')
log.log(latestValue,"LATEST VALUES")
if latestValue=="":
return(prevValues)
else:
return(latestValue)
prevValues=latestValue
现在的问题是文本文件充满了读数,随着时间的推移会减慢程序的速度,我知道这不是最有效的方法,但我刚刚进入 python,所以无论如何要转移直接从Main.py到App.py的数据还是达到一定行数后删除文本文件读取的方法?50 行之后的示例,它开始删除/覆盖这些行?
解决方案
您可以使用 pythons 多处理模块,然后在两个模块之间实现管道。您也可以使用队列,但管道可以提高程序的性能,因为队列是建立在管道之上的。但是管道也有它的缺点:
- Pipe() 只能有两个端点。
- 一个 Queue() 可以有多个生产者和消费者。
请参阅以下链接以更好地理解该主题:
关于如何自动删除一段代码或脚本,请参考这个堆栈溢出问题:
由于您需要在不自动删除的情况下更新文件,这里有一些可能会有所帮助的答案:
推荐阅读
- arrays - SOAP、WSDL 和数组/列表
- mysql - mySQL 中内连接和外连接的混合
- postgresql - 将表创建为 ... 使用连接选择
- php - Onchange 事件在下拉列表中触发并在 codeigniter 的控制器中获取值
- angular - 构建 Angular 6 项目时从服务更改 url
- plugins - 流利的 out_forward
- c++ - gcc7 lambda表达式返回类型没有箭头
- ruby-on-rails - 如何清除特定类(ActiveRecord 模型)的 Rails 类缓存?
- java - RX2。如何对 x 秒后没有发出任何反应作出反应?
- python - 同时迭代字符串的元素