待解决的问题:停止运行时间太久的程序。

2011-03-27 21:44 · cliffgao

待解决的问题: 当一个程序运行时间很久时,自动停止该程序。 (1)评论:如果遇到这种情况,试着从另一个方面想想问题:是不是我们的数据有问题,如果数据没有问题,再试图解决本文中要处理的问题。 (2)问题状态: 初步解决。 (3)拟解决方案:1) Thread, 2

待解决的问题: 当一个程序运行时间很久时,自动停止该程序。

(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

#

###

关键词: