Пример использования интерпретатора Python REPL с функцией, которая принимает параметры.
>>> import timeit
>>> def naive_func(x):
... a = 0
... for i in range(a):
... a += i
... return a
>>> def wrapper(func, *args, **kwargs):
... def wrapper():
... return func(*args, **kwargs)
... return wrapper
>>> wrapped = wrapper(naive_func, 1_000)
>>> timeit.timeit(wrapped, number=1_000_000)
0.4458435332577161
Точка использования excepthook заключается в том, что вы можете отслеживать все исключения, поднятые вашей программой, и обрабатывать их по центру.
Таким образом, вам следует избавиться от большинства этих блоков try/except
и запишите исключения внутри функции excepthook. Я говорю «most», потому что вы можете быть затронуты bug 1230540 , где sys.excepthook
неправильно вызывается за пределами основного потока. См. Поток трекера для некоторых обходных путей для этого, или этот ответ SO .
QThread
- все работает нормально, поэтому мне не нужен дополнительный хак, и я полностью удалил всеtry...except
и чувствовал себя намного счастливее) – GriMel 11 February 2016 в 01:29