加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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].

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读