【问题标题】:Python: track the percentage of the job processedPython:跟踪已处理作业的百分比
【发布时间】:2016-11-09 21:33:17
【问题描述】:

我有以下代码运行了很长时间:

my_df['result'] = my_df.apply(lambda x: my_fun(x), axis = 1)

my_df 是一个熊猫数据框,我有数百万行。有没有办法找出已经完成的工作百分比?例如在 my_fun 或某处放置打印语句?谢谢!

【问题讨论】:

    标签: python python-2.7 pandas lambda


    【解决方案1】:

    除非您正在做的事情会使您的流程与sys.stdout(罕见但合理)或sys.stderr(非常罕见但在技术上并非不可能)断开连接,否则您在my_fun 中放置打印语句的想法应该工作得很好。

    当然,您将无法在my_fun 中记录进度中间表达式,例如如果my_fun 调用了一些需要很长时间的other_fun。在这种情况下,您必须将打印件放入other_fun。例如,如果您对每一行分别做某事,您可以在相关循环中的某处放置一个打印,说明已经完成了多少行,相当容易。只需保持计数,并在每次达到 1000(或 10,000 ,或 100,000 - 选择一个适合您使用的数字)。不要打印每一行 - 如果单行可以快速处理,它会变得太快而无法实际读取,并且您最终可能会在打印上花费足够的时间,这实际上会显着减慢处理速度。

    如果您正在执行一项需要考虑所有数据且没有循环的单一操作...您仍然可以在函数中生成进度报告,但没有真正的方法来获得“完成的行数" 统计数据,可能会更难获得准确的百分比。

    【讨论】:

    • 你能举例说明如何在 my_fun() 中打印进度百分比吗?由于是lambda调用的,不知道它是如何跟踪整个工作进度的……
    • 不知道my_fun到底是什么。只需...在您希望它打印某些内容的函数中的任何位置添加一个打印语句。也许给函数一个属性来保持计数,以免每次重复都打印。
    猜你喜欢
    • 2017-09-30
    • 2020-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-29
    • 1970-01-01
    • 2019-10-31
    相关资源
    最近更新 更多