变量更改时的python信号?
我有一个每秒计算一个变量的脚本(我的程序每秒读取脚本bash的输出并解释数据)。是否存在一种方法来检测该var是否发生变化 这是我的代码的一部分,文本是ffmpeg或avconv输出,从vte终端读取:变量更改时的python信号?,python,variables,Python,Variables,我有一个每秒计算一个变量的脚本(我的程序每秒读取脚本bash的输出并解释数据)。是否存在一种方法来检测该var是否发生变化 这是我的代码的一部分,文本是ffmpeg或avconv输出,从vte终端读取: #Terminal def terminal(self): self.v = vte.Terminal() self.v.connect ("child-exited", lambda term: self.verif(self, my_class))
#Terminal
def terminal(self):
self.v = vte.Terminal()
self.v.connect ("child-exited", lambda term: self.verif(self, my_class))
self.v.connect('contents-changed', self.term_output)
[...]
def term_output(self, my_class, donnees=None):
text = str(self.v.get_text(lambda *a: True).rstrip())
[...] # decode the text
print "time", self.time
print "duration", self.duration
vte终端中的回路(avconv输出):
持续时间:00:00:23.00,开始时间:0.100511,比特率:0 kb/s
输出#0,matroska,发送至“/media/guillaume/XT/Telechargements/uzz/la#u qualite_de_l_air_1000019643.mkv”:
按[q]停止,按[?]获取帮助
帧=589 fps=115 q=-1.0 Lsize=2191kB时间=00:00:23.79比特率=754.3kbits/s
火车站
Votre Fichier最终测试:
/media/guillaume/XT/Telechargements/uzz/la_qualite_de_l_air_1000019643.mkv
输出示例(vte输出的时间和持续时间):
time 5.1
持续时间23.0
时间6.1
持续时间23.0
时间9.1
持续时间23.0
时间14.1
持续时间23.0
时间14.1
持续时间23.0
时间16.1
持续时间23.0
时间18.1
持续时间23.0
时间19.1
持续时间23.0
时间21.1
持续时间23.0
时间23.1
持续时间23.0
时间23.1
持续时间23.0
时间23.1
持续时间23.0
时间23.1
持续时间23.0
时间23.1
持续时间3960.0#是否检测到此更改?(对应于avconv的第二个输出)
时间1.1
持续时间3960.0
时间7.1
持续时间3960.0
时间10.1
持续时间3960.0
时间20.1
持续时间3960.0
时间20.1
持续时间3960.0
添加标志变量(全局或局部,取决于所需的范围)
将值指定给开始/第一个循环中的标志
将此标志的值与变量进行比较,如果它发生了变化(可以是信号,也可以是您需要的打印)
您能提供一个具有这种行为的程序并清楚地向我们解释问题吗?解释起来有点复杂,我的程序每秒读取脚本bash的输出并解释数据。很抱歉,没有看到该程序,我们无法帮助您解决问题:(好的,我会尝试在我的代码中添加一部分。我不认为这样更清楚?
time_val = 'init';
def term_output(self, my_class, donnees=None):
text = str(self.v.get_text(lambda *a: True).rstrip())
[...] # decode the text
if (time_val == 'init'):
time_val = self.time
if self.time != time_val:
print "The value of time has changed from " + str(time_val) + " to " + str(self.time)
print self.time