在我的复杂python程序中,当它运行时,我有一段代码,每3秒执行一次,打印程序的进度,执行完毕的百分比如下:
while len(dequeueingFinishedList)!=10:
print(str(len(masterListCSV_RowsListFinished)/float(len(masterListCSV_RowsList))*100) + "% done.")
time.sleep(3)
time.sleep()
功能是否会减慢我的程序?我读了睡眠功能暂停执行。如果它减慢了我的程序,是否有更正确的方法每隔3秒向我打印一次进度?
答案 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