第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何在python中超時(shí),超時(shí)不到一秒

如何在python中超時(shí),超時(shí)不到一秒

炎炎設(shè)計(jì) 2019-12-04 12:44:46
問題的規(guī)格:我正在搜索日志文件中非常多的行,并將這些行分配到組中,以便使用該re.match()函數(shù)存儲(chǔ)的正則表達(dá)式(RegExses)。不幸的是,我的某些RegExses太復(fù)雜了,Python有時(shí)會(huì)讓自己陷入困境。因此,我需要使用某種超時(shí)保護(hù)它。問題:re.match我正在使用的是Python的函數(shù),正如我在StackOverflow上的某處所發(fā)現(xiàn)的(非常抱歉,我現(xiàn)在找不到鏈接:-()。運(yùn)行Python的庫中斷線程非常困難。因此線程不在游戲中。因?yàn)閞e.match函數(shù)的評估需要相對較短的時(shí)間,并且我想用此函數(shù)分析大量的行,所以我需要一些超時(shí)函數(shù)來執(zhí)行,而該函數(shù)不會(huì)花費(fèi)太長時(shí)間(這使線程更不適合,初始化花費(fèi)了很長時(shí)間。新線程),并且可以設(shè)置為少于一秒。出于這些原因,此處的答案是- 函數(shù)調(diào)用超時(shí) ,此處- 如果裝飾器所需的時(shí)間過長(警報(bào)-1秒及以上),則超時(shí)函數(shù)不在表中。我今天上午一直在尋找這個(gè)問題的解決方案,但沒有找到滿意的答案。
查看完整描述

2 回答

?
互換的青春

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超6個(gè)贊

解:


我剛剛修改了一個(gè)發(fā)布在這里的腳本:超時(shí)功能,如果需要太長時(shí)間才能完成。


這是代碼:


from functools import wraps

import errno

import os

import signal


class TimeoutError(Exception):

    pass


def timeout(seconds=10, error_message=os.strerror(errno.ETIME)):

    def decorator(func):

        def _handle_timeout(signum, frame):

            raise TimeoutError(error_message)


        def wrapper(*args, **kwargs):

            signal.signal(signal.SIGALRM, _handle_timeout)

            signal.setitimer(signal.ITIMER_REAL,seconds) #used timer instead of alarm

            try:

                result = func(*args, **kwargs)

            finally:

                signal.alarm(0)

            return result

        return wraps(func)(wrapper)

    return decorator

然后您可以像這樣使用它:


from timeout import timeout 

from time import time


@timeout(0.01)

def loop():

    while True:

       pass

try:

    begin = time.time()

    loop()

except TimeoutError, e:

    print "Time elapsed: {:.3f}s".format(time.time() - begin)

哪些印刷品


Time elapsed: 0.010s


查看完整回答
反對 回復(fù) 2019-12-04
?
慕村9548890

TA貢獻(xiàn)1884條經(jīng)驗(yàn) 獲得超4個(gè)贊

使用setitimer而不是警報(bào)解決了這個(gè)問題-現(xiàn)在可以將時(shí)間設(shè)置為浮動(dòng)-而且我認(rèn)為以完整的語法發(fā)布它并參考該答案會(huì)更加清楚。我不是要竊取某人的信譽(yù)。:-)

查看完整回答
反對 回復(fù) 2019-12-04
  • 2 回答
  • 0 關(guān)注
  • 675 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號