2015-05-05 6 views
1

Например, у меня есть эта функция:Завершить функцию Python через определенное время?

some_global_varible = "" 
def bob(some_argument, some_more): 
    import time 
    for x in range(10): 
     print("Working") 
     time.sleep(1) 
    return "I finished and this is my result" 

Как я могу запустить эту функцию для определенного количества времени, и если он не кончает в то время закончить. Но также, если он завершит получение результата возврата (если он один, потому что, возможно, его нет, и он просто заканчивается).

Также это не будет работать в Unix, потому что я видел пример Unix, который не работает в Windows. Также, если вы могли бы изменить форму глобальной переменной внутри функции, она была бы идеальной, но это было бы дополнительно.

Прежде всего, если это возможно (если невозможно обнаружить конец без возврата, это не имеет значения, я могу включить возврат только от этого. Например: return «Это только для окончания»)

EDIT: Функция «bob» - пример функции, которая занимает 10 секунд, но план заключается в использовании ее на других функциях, которые могут принимать неопределенное количество времени. И эта функция не может быть отредактирована, чтобы добавить просто что-то, чтобы остановить ее через несколько секунд.

Лучшим примером может быть «pep», поскольку он не закончится сам по себе.

def pep(): 
    import time 
    while True: 
     print("Working") 
     time.sleep(1) 

ответ

0

Вы можете использовать time.time(), чтобы получить текущее время в секундах, прежде чем начать свой цикл, а затем в конце каждого цикла для, проверить, как долго прошло с тех пор, и если это слишком долго, то вы можете вернуться.

def bob(some_argument, some_more): 
    import time 
    start = time.time() 
    for x in range(10): 
     print("Working") 
     time.sleep(1) 
     if time.time() - start > 5: 
      return "I took too long" 
    return "I finished and this is my result" 

Очевидно заменить 5 со временем вы хотите использовать, но этот код дает мне этот выход:

Working 
Working 
Working 
Working 
Working 
'I took too long' 
+0

Я не могу редактировать функцию. Функция «bob» была только примером, я не буду использовать ее. – Robotit

-1

Вы можете использовать перерыв;

Например, если значение счетчика цикла отвечает следующее условие так:

if condition: 
    break; 

это, безусловно, закончить цикл.

+0

Я не могу отредактировать функцию. Функция «bob» была только примером, я не буду использовать ее. – Robotit

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