time.sleep()是否会停止所有执行?

时间:2015-09-14 19:17:34

标签: python time sleep

在我的复杂python程序中,当它运行时,我有一段代码,每3秒执行一次,打印程序的进度,执行完毕的百分比如下:

while len(dequeueingFinishedList)!=10:
    print(str(len(masterListCSV_RowsListFinished)/float(len(masterListCSV_RowsList))*100) + "% done.")
    time.sleep(3)

time.sleep()功能是否会减慢我的程序?我读了睡眠功能暂停执行。如果它减慢了我的程序,是否有更正确的方法每隔3秒向我打印一次进度?

4 个答案:

答案 0 :(得分:3)

是的,time.sleep将停止您的计划。

在循环中使用time.time并检查三秒钟过去了。

答案 1 :(得分:2)

time.sleep(seconds)将停止当前线程的执行。因此,它将在该线程上完全停止您的程序:直到那些秒数通过才会发生其他任何事情。

你不必担心这个。如果程序使用线程,则其他线程不应该停止。

答案 2 :(得分:0)

from time import time

prev = time()
while True:
    now = time()
    if now - prev > 3:
        print 'report'
        prev = now
    else:
        pass
        # runs

答案 3 :(得分:0)

执行此操作的正确方法是使用signal

import signal

def handler(signum, frame):
    print i
    if i>100000000:
        raise Exception("the end")
    else:
        signal.alarm(3)      

signal.signal(signal.SIGALRM, handler)   
signal.alarm(3)     

i=0
while True:
   i+=1