在指定的时间内运行python代码并恢复结果

在指定的时间内运行python代码并恢复结果,python,time,Python,Time,在中,我还希望在有限的时间内运行一些代码。但是,我想在代码中断时恢复一些变量的值,这是问题中的答案所不允许的。一个虚构的例子是: import time limit = 10 counter = 0 start = time.time() while(time.time() - start < limit): counter += 1 导入时间 限值=10 计数器=0 开始=时间。时间() while(time.time()-开始limit),它仍然会执行一次,这是我不想要的

在中,我还希望在有限的时间内运行一些代码。但是,我想在代码中断时恢复一些变量的值,这是问题中的答案所不允许的。一个虚构的例子是:

import time

limit = 10
counter = 0
start = time.time()
while(time.time() - start < limit):
    counter += 1
导入时间
限值=10
计数器=0
开始=时间。时间()
while(time.time()-开始<限制):
计数器+=1
这样,我可以在运行
限制
秒后恢复
计数器。但我不想使用这种方法,因为如果while循环中的操作需要很长时间(例如>
limit
),它仍然会执行一次,这是我不想要的


如何避免这种情况,但在进程中断时仍能获得某些变量的值?

您可以使用SIGALRM,每次都向程序发送一个信号。因为参数是堆栈帧,所以可以从中读取任何变量

#!/usr/bin/python

import signal
import time

def alarm_handler (signo, frame):
    print ("SIGALRM: counter = %s" % frame.f_locals ["counter"])
    signal.alarm (2)

signal.signal (signal.SIGALRM, alarm_handler)
signal.alarm (2)

counter = 0
while True:
    time.sleep (.5)
    counter += 1