2014-01-15 72 views
1

我想每5秒将字母X追加到列表中。我的代码到目前为止:每隔5秒追加

import threading 

def Seconds(): 
    threading.Timer(5.0, Seconds).start() 
    List = []  
    n = "X" 
    List.append(n) 
    print List 
Seconds() 

我想拥有一个列表,每5秒增长一次,并保存到一个TXT。每5秒记录一次。此代码的目的是检查我的电池供电系统的运行时间。代码与系统一起启动。当电池电量不足时,我想读出文本文件以查看代码的执行时间,因此我的系统能够使用电池运行多久。

+0

为什么不使用队列?他们是线程安全的。 –

回答

0

运行一个独立的过程。

def alive(): 
    with open("log.txt", "w") as output: 
     while True: 
      time.sleep(5) 
      output.write("X") 
      output.flush() # important to ensure that long periods 
         # of 'X' are not kept in buffer and lost on power down. 

p = Process(target=f, args=('bob',)) 
p.start() 

time.sleep(40) # simulate real program 
p.terminate() # eventually 
0

您的嵌入式/电池供电系统是否使用Unix?用bash脚本可以更容易实现:

#!/bin/bash 

while true 
do 
    cat /proc/uptime > log.txt 
    sleep 5 
done 

然后,您将获得确切的正常运行时间。请注意,在测量这些数据时,您可能会因无法使处理器进入低功耗状态并导致额外的磁盘写入而意外使用更多能源。

编辑,粗糙的Python版本不依赖于OS

#!/bin/python 
import time 

starttime = time.time() 

while True: 
    with open('log.txt', 'w') as log: 
     print >> log, time.time() - starttime 
    time.sleep(5) 

注意的时候会被时间运行此脚本之前所花费的金额被关闭。

+0

OP的用例是收集系统的运行时间,这符合法案。不需要使用大锤击钉。 – Tim

+0

也许你是对的。但是在这个问题中没有关于操作系统的信息(不管它是否是** nix **)。 – sergzach