你的意思是函数一直在做cpu密集型的计算任务吗?可以把任务分割,执行完一个小任务后检查是否超时,超时return,否则继续。
补充:
这样吧
# coding=utf-8
import datetime
import time
def run(n):
s = 0
for i in range(0, n):
for j in range(0, n):
s += 1
return s
def run_within_time(n, time_in_millisecond):
s = 0
start_time = long(time.time() * 1000)
for i in range(0, n):
for j in range(0, n):
s += 1
elapsed = long(time.time() * 1000) - start_time
# 做完一部分任务后,判断是否超时
if elapsed >= time_in_millisecond:
s = -1
break
return s
num = 10000
print long(time.time() * 1000)
print datetime.datetime.now()
print run(num)
print 'run :'
print datetime.datetime.now()
print run_within_time(num, 200)
print 'run_within_time:'
print datetime.datetime.now()
我这边的输出是:
2016-07-28 22:25:33.271503
100000000
run :
2016-07-28 22:25:37.473611
-1
run_within_time:
2016-07-28 22:25:37.673276
不知道你面对的场景是不是这样,具体问题还要具体分析。