2014-01-15 10 views
1

Я хочу добавить букву X в список каждые 5 секунд. Мой код до сих пор:Добавить каждые 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 

После этого вы получаете точное время безотказной работы. Обратите внимание, что при измерении этих данных вы можете непреднамеренно использовать больше энергии, не позволяя процессору перейти в более низкое энергопотребление и вызвать дополнительную запись на диск.

Edit, грубая версия Python не зависит от ОСА

#!/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

Смежные вопросы