每30秒将一个列表设为0

时间:2017-08-23 14:28:00

标签: python python-2.7

我创建了一个列表,我只用零填充,有时我在列表的某些情况下写了一些,但我的目标是每隔30秒将列表置零,我不知道该怎么做(我我是Python的新手。)

我在互联网上找到了一些代码部分,然后我就组装了它们。我正在阅读SIP打印,当我收到“SIP / 2.0 200 OK”时,表示终端处于活动状态,如果IP地址为192.168.1.25,我将“1”放入案例25中。但是几次注册后移动设备无法注册,所以我想每隔30秒将列表设置为0。

3 个答案:

答案 0 :(得分:0)

要在给定的时间间隔内执行某些操作,您可以使用计时功能。

import time
time.sleep(30)

将暂停执行代码30秒。请注意,这是阻塞的,因此在此期间您无法执行某些操作(至少不在同一个线程中,并且多线程/多处理事务更加困难)。因此,将零置于列表中(如果是这样,您想要做什么),则所有30秒执行:

import time

list_of_values = []
while True:
    time.sleep(30)
    list_of_values.append(0)

答案 1 :(得分:0)

要在做其他事情时每30秒做一次事情,你可以启动计时器并检查是否已经过了30秒:

import time
start = time.clock()
while true:
  stop = time.clock()
  time_passed = stop-start
  if time_passed > 30:
    reset_list_to_zero_code_here
    start = time.clock() #Resets the timer.
  else:
    do_whatever_you_want_to_do
    time.sleep(0.1) #probably change this 

如果超过30秒,则设置计时器和每次往返检查。如果是,则运行您放置的任何init脚本并重置计时器。如果没有,它会运行第do_whatever_you_want_to行。根据此行的执行速度,您可能需要在其后面添加一个额外的睡眠以使其执行时间(并且可能节省CPU负载)。但是,这是一种非常基本的方法,可能会有所改进。

要了解时间,请参阅: Python - time.clock() vs. time.time() - accuracy?

答案 2 :(得分:0)

您可以为它创建处理程序。只需每30秒发送一次报警信号,它将为您更新列表。 下面是示例。

import signal
import time
class set_list:
    def __init__(self):
        signal.signal(signal.SIGALRM, self._set_list)
        signal.alarm(30)
    def _set_list(self,signum, frame):
        global list1
        print list1
        list1 = []
        signal.alarm(30)

set_list()
list1 = []

for i in range(10):
    list1.append(i)
    print list1
    time.sleep(6)

根据您的要求在_set_list方法中更新您的列表。希望这会有所帮助。