Completed
Push — master ( 5cbcf8...d3d059 )
by Matthias
01:08
created

timeout()   A

Complexity

Conditions 4

Size

Total Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

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