2015-12-11 1 views
-1

Рассмотрим следующий код:Как сделать функцию пробег для конкретных секунд без сна

def boil(): 
    print("Boiling") 

def cool(): 
    print("Cooling") 
    sleep(2) 

start = time.time() 
boil() 
cool() 
boil() 
cool() 
print(round(time.time()-start)," secs") 

Я хочу, чтобы функция кипение(), чтобы работать в течение 3-х секунд без использования сна(), так что конечный выход 10 сек. Как я могу это сделать?

Примечание: Я создаю два набора кодов для иллюстрации последовательного и параллельного. Поэтому я не хочу, чтобы спать() в кипении(), как это сделало бы его одновременно, когда я использую темы, как показано ниже, так что код может выполнять 2 секунды быстрее:

def boil(): 
    print("Boiling") 

def cool(): 
    print("Cooling") 
    sleep(2) 

start = time.time() 
boil() 
#Here I am cooling and cooking concurrently 
Thread(target=cool).start() 
boil() 
cool() 
print(round(time.time()-start)," secs") 
+1

Почему нет 'sleep()'? –

+0

Ну, sleep() помещает поток в состояние ожидания, и я не хочу этого в кипении(). Это упрощенная версия проблемы, которую я пытаюсь решить. – codingsplash

+0

Если вы используете потоки, вы должны показать какой-то код потока и объяснить, чего вы хотите достичь. –

ответ

1

Я думаю, вы могли бы попробовать что-то вроде это. Использование time.clock() вместо

import time 

def boil(): 
    print("Boiling") 
    b_start = time.clock() 
    b_end = time.clock() 
    while b_end - b_start < 3: # 3 second delay 
     b_end = time.clock() 

def cool(): 
    print("Cooling") 
    time.sleep(2) 


start = time.clock() 
end = time.clock() 

while end - start < 10: # runs for 10 seconds 
    boil() 
    cool() 
    end = time.clock() 

print(round(time.clock()-start)," secs") 

#Output 
Boiling 
Cooling 
Boiling 
Cooling 
10 secs 
+0

Спасибо. Но я хочу sleep() на cool(), поскольку я упомянул, что позже буду использовать потоки. – codingsplash

+0

Я думал, ты сказал, что не спишь? Я предположил, что использование сна в вашем примере было тем, что вы хотели изменить. –

+0

О, мой! Извините за отсутствие ясности в вопросе. У кипячения() не должно быть сна(), тогда как cool() должен иметь его. Таким образом, я могу использовать его для иллюстрации последовательного и параллельного программирования. – codingsplash

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