一、前言
本篇尝试对运行的python函数设置时间限制,超时则报错结束运行,因为在某些时候运行可能会存在限时的情况。方法是使用multiprocessing,将函数作为一个子进程,设置子进程时间,使用join堵塞主进程
二、代码
class A():
def __int__(self , ):
pass
def timeout(self , timeout = 3 ):
pool = mp.Pool(processes = 1)
count = 10
result = pool.apply_async(self.run, args = ( count , ), kwds = { } )
try:
res = result.get(timeout = timeout)
except mp.TimeoutError:
pool.terminate()
print("运算超时!必须在{}秒完成!".format( timeout ) )
return 1
else:
pool.close()
pool.join()
return res
def run(self , count = 10 ):
t = 0
while t<count:
print( t )
time.sleep(1)
t+=1
print("运算结束!")
return 0
三、结果
run函数需运行10秒才结束,但是timeout 控制在3秒就结束