待解决的问题: 当一个程序运行时间很久时,自动停止该程序。
(1)评论:如果遇到这种情况,试着从另一个方面想想问题:是不是我们的数据有问题,如果数据没有问题,再试图解决本文中要处理的问题。
(2)问题状态: 初步解决。
(3)拟解决方案:1) Thread, 2) Singal 有待实际程序中进一步验证。
(4)参考:https://stackoverflow.com/questions/2831775/running-a-python-script-for-a-user-specified-amount-of-time
(5)具体方法
1.
#!/usr/bin/env python
from time import sleep
from threading import Thread
import time
def my_task():
print("start time: %s" %time.time())
for i in range(10):
print("%d / 10 is ok" %(i+1))#time.time()
sleep(2)
print("end time : %s" %time.time())
t=Thread(target=my_task) #open an thread
t.daemon=True
t.start()
snooziness=int(raw_input("enter the amount of seconds you wants to run this:"))
sleep(snooziness) #if my_task is longer than snooziness, my_task will break out.
print ("after sleep, end time %s" %time.time())
###########
2.
#!/usr/bin/env python
import signal
import time
def got_alarm(sigum, frame):
print "Alarm"
start=time.time()
print("start: %s" %start)
signal.signal(signal.SIGALRM, got_alarm)
signal.alarm(2)
end=time.time()
print("end: %s end-start: %f" %(end,end-start))
start=time.time()
print ("sleeping....")
time.sleep(4)
end=time.time()
print(" after sleep end-start: %f " %(end-start))
print "done"
##########
#start: 1301236049.46
#end: 1301236049.46 end-start: 0.000055
#sleeping....
#Alarm
# after sleep end-start: 2.000029
#done
#
###