# func_set_timeout作为装饰器使用,来作为目标函数的超时处理方式
import time
import os
from func_timeout import func_set_timeout
@func_set_timeout(5)
def my_test(name):
print('子进程运行中,name={},pid={}'.format(name, os.getpid()))
time.sleep(4)
print('子进程已经结束')
if __name__ == '__main__':
print('父进程:{}'.format(os.getpid()))
try:
p = Process(target=my_test, args=('test', ))
p.start()
except TimeoutError as e:
print('子程序超时')
# 执行以上程序输出:
# 父进程:29908
# 结束
# 子进程运行中,name=test,pid=40280
# 子进程已经结束
# 说明:my_test函数执行需要4s,设置的超时时间大于4s,因此子进程正常执行;若设置my_test函数执行时间大于5s,则报错,代码中尝试了通过捕获异常来让程序正常运行退出,但超时异常时发生在子进程中的,因此捕获异常失败,此时的报错见图1。
那你把try写在子进程的函数里呀,为什么写主进程里了
写在my_test函数里面吗?我试了,还是同样的报错