Python 函数超时操作——限制函数运行时间超时则退出执行

该博客介绍了如何使用Python的多进程库`multiprocessing`中的`Process`类来实现函数的超时控制。通过创建一个新的线程运行目标函数`test_fun`,并设置超时时间,当超过设定的时间限制,主线程会终止子线程的运行,以此达到限制函数运行时间的目的。示例代码中,`FTimer`类继承自`Process`,并在`run`方法中调用`test_fun`。在`main`函数中,创建`FTimer`实例并启动,然后等待2秒后终止线程,确保线程在20秒后已经退出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 简单讲讲,test_fun 是我们要限定运行时间的函数,里面模拟了运行 5 秒。FTimer 是一个线程类,在 run 函数中调用 test_fun。

原理:main函数运行的时候,通过新开一个线程运行要限定的函数,并通过 sleep 设定一个超时等待时间,等待时间一到,就手动将线程终止。

import time
from multiprocessing.context import Process

def test_fun(sfz):
  print("开始运行,我读到了参数:",sfz)
  time.sleep(5) # 模拟超时运行的情况
  print('这里超时运行')

class FTimer(Process):
    def __init__(self, sfz):
      super().__init__()
      self.sfz = sfz
      pass

    def run(self):
        test_fun(self.sfz)


def main():
  sfz="测试参数"

  p = FTimer(sfz)
  p.daemon = True
  p.start()

  time.sleep(2) # 设定函数超时时间,超过2秒将停止函数运行
  p.terminate()

  time.sleep(20) # 等待一下看看线程是否真的退出了

if __name__ == '__main__':
    main()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值