timeout()   A
last analyzed

Complexity

Conditions 4

Size

Total Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 4
c 0
b 0
f 0
dl 0
loc 10
rs 9.2
1
from functools import wraps
2
from multiprocessing import Process
3
4
# class TimeoutError(Exception):
5
#    pass
6
7
8
def timeout(seconds=5):
9
    def decorator(func):
10
        def wrapper(*args, **kwargs):
11
            process = Process(None, func, None, args, kwargs)
12
            process.start()
13
            process.join(seconds)
14
            if process.is_alive():
15
                process.terminate()
16
        return wraps(func)(wrapper)
17
    return decorator
18