python--multiprocessing设置函数运算超时限制

本文介绍了如何利用Python的multiprocessing模块来为函数设置时间限制。当函数运行超过预设时间(如3秒)时,会捕获TimeoutError并终止运行,防止长时间运行。示例代码创建了一个子进程执行函数,并通过apply_async和get方法配合实现超时控制。
摘要由CSDN通过智能技术生成

一、前言

本篇尝试对运行的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秒就结束

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值