Предупреждение LNK4248: неразрешенный токен typeref (01000014)

Ниже приведено небольшое улучшение для данного решения на основе потоков.

Код ниже поддерживает исключения:

def runFunctionCatchExceptions(func, *args, **kwargs):
    try:
        result = func(*args, **kwargs)
    except Exception, message:
        return ["exception", message]

    return ["RESULT", result]


def runFunctionWithTimeout(func, args=(), kwargs={}, timeout_duration=10, default=None):
    import threading
    class InterruptableThread(threading.Thread):
        def __init__(self):
            threading.Thread.__init__(self)
            self.result = default
        def run(self):
            self.result = runFunctionCatchExceptions(func, *args, **kwargs)
    it = InterruptableThread()
    it.start()
    it.join(timeout_duration)
    if it.isAlive():
        return default

    if it.result[0] == "exception":
        raise it.result[1]

    return it.result[1]

Вызывает его с 5-секундным таймаутом:

result = timeout(remote_calculate, (myarg,), timeout_duration=5)
0
задан Trang 15 January 2019 в 09:45
поделиться