2012-06-17 3 views
1

Как выполнить функцию в Python на основе времени, предоставленного аргументом seconds.Как выполнить функцию в Python на основе времени, предоставленного аргументом

def timerfn(seconds, fn, *args): 
    #start some timer 
    #if function first launch is > "seconds", abort 
    #if function doing great.. repeat it and stop at "seconds" 

Как я подумываю над ним time.clock() не может реально помочь здесь, потому что функция может быть очень жесткой, и он никогда не достигнет встречного таймера, чтобы показать какой-то результат или прервать.

Должен ли я использовать модуль для нарезания резьбы? я не знаю много о потоках, но из того, что я читал, вы можете иметь только один поток в работе в соответствии с GIL, и этому процессу действительно нужно 2 потока одновременно ... или какой-то другой трюк, который я не знаю ,

+0

Что такое функция powerup? – buc

+0

это просто для представления, вход может быть любой функцией, должен ли я удалить его? – Umren

+0

Несколько очень интересных ответов на аналогичный вопрос здесь: http://stackoverflow.com/questions/492519/timeout-on-a-python-function-call – tweet

ответ

0

GIL означает, что работает только один поток, но это не значит, что вы ограничены одним потоком.

Похоже, вы хотите threading.Timer.

+0

как можно threading.Timer помочь здесь? может ли он динамически вырваться из бесконечного цикла или что-то в этом роде? – Umren

+0

Да, если вы используете его правильно, вы можете использовать его для установки события (также в модуле потоковой передачи), которое выходит из цикла – dav1d

Смежные вопросы