我创建了一个列表,我只用零填充,有时我在列表的某些情况下写了一些,但我的目标是每隔30秒将列表置零,我不知道该怎么做(我我是Python的新手。)
我在互联网上找到了一些代码部分,然后我就组装了它们。我正在阅读SIP打印,当我收到“SIP / 2.0 200 OK”时,表示终端处于活动状态,如果IP地址为192.168.1.25,我将“1”放入案例25中。但是几次注册后移动设备无法注册,所以我想每隔30秒将列表设置为0。
答案 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方法中更新您的列表。希望这会有所帮助。