python – 跟踪和显示已执行代码的百分比
发布时间:2020-12-20 11:34:01 所属栏目:Python 来源:网络整理
导读:我有一个非常大的代码,需要一些时间来运行.为了确保进程没有停止在我打印的位置,以筛选已经执行的代码的百分比,这取决于for循环和整数. 要显示已经处理的for循环的百分比,我使用标志来指示已经传递了多少循环. MWE可能会让它更清晰: import timeN = 100flag
我有一个非常大的代码,需要一些时间来运行.为了确保进程没有停止在我打印的位置,以筛选已经执行的代码的百分比,这取决于for循环和整数.
要显示已经处理的for循环的百分比,我使用标志来指示已经传递了多少循环. MWE可能会让它更清晰: import time N = 100 flag_15,flag_30,flag_45,flag_60,flag_75,flag_90 = False,False, False,False for i in range(N): # Large block of code. time.sleep(0.1) if i + 1 >= 0.15 * N and flag_15 is False: print '15%' flag_15 = True elif i + 1 >= 0.3 * N and flag_30 is False: print '30%' flag_30 = True elif i + 1 >= 0.45 * N and flag_45 is False: print '45%' flag_45 = True elif i + 1 >= 0.6 * N and flag_60 is False: print '60%' flag_60 = True elif i + 1 >= 0.75 * N and flag_75 is False: print '75%' flag_75 = True elif i + 1 >= 0.9 * N and flag_90 is False: print '90%' flag_90 = True elif i + 1 == N: print '100%' 这有效,但相当冗长,真的很难看.我想知道是否有更好/更漂亮的方式来做到这一点. 解决方法
(发布第二个答案,因为此解决方案使用完全不同的技术)
您可以创建里程碑值列表,并在完成百分比达到最低值时打印消息. milestones = [15,30,45,60,75,90,100] for i in range(N): #do work here percentage_complete = (100.0 * (i+1) / N) while len(milestones) > 0 and percentage_complete >= milestones[0]: print "{}% complete".format(milestones[0]) #remove that milestone from the list milestones = milestones[1:] 结果: 15% complete 30% complete 45% complete 60% complete 75% complete 90% complete 100% complete 与我之前发布的“步幅”方法不同,在这里您可以精确控制打印的百分比.它们不需要均匀分布,它们不需要被N整除,它们甚至不需要是整数!如果你愿意,你可以做里程碑= [math.pi,4.8,15.16,23.42,99]. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |