Выполнение метода прерывания после произвольного времени в Python - PullRequest
1 голос
/ 18 февраля 2010

У меня есть метод doA (), который иногда зависает на некоторое время. Существуют ли в Python общие модули, которые могут контролировать время выполнения doA () и прерывать его? Конечно, это может быть реализовано через потоки, так что простая оболочка вокруг модуля потоков может быть хорошим решением.

Другими словами, я хотел бы иметь такой код:

import CoolAsyncControl
CoolAsyncControl.call(self.doA, timeout = 10)

1 Ответ

6 голосов
/ 18 февраля 2010

Вы можете использовать threading.Timer для вызова thread.interrupt_main , пока вы запускаете doA в главном потоке. Обратите внимание, что желаемый синтаксис невозможен, потому что Python (как и большинство языков, за исключением, например, Haskell) является «нетерпеливым» - аргументы полностью вычисляются до выполнения вызова, поэтому self.doA() будет выполняться до завершения до у метода call есть шанс что-нибудь с этим сделать! Вам придется использовать некоторый синтаксис, такой как

CoolIt.call(self.doA, args=(), timeout=100)

, чтобы call мог установить таймер на перед тем, как выполнит вызов doA с заданными аргументами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...