Python:跟踪处理的作业百分比

时间:2016-11-09 21:33:18

标签: python python-2.7 pandas lambda

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

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

my_df是一个pandas数据框,我有数百万行。有没有办法找出完成了多少百分比的工作?例如在my_fun或某处放置一个print语句?谢谢!

1 个答案:

答案 0 :(得分:0)

除非您正在做一些会使您的流程与sys.stdout(罕见但似乎合理)或sys.stderr(非常罕见但技术上并非不可能)断开连接的事情,否则您只想打印my_fun中的陈述应该可以正常工作。

当然,您无法在my_fun中记录中间表达的进度,例如,如果my_fun调用一些需要很长时间的other_fun时间。在这种情况下,您必须将打印件放在other_fun中。例如,如果您分别对每一行执行某些操作,则可以在相关循环中的某处放置一个打印,说明已经完成了多少行,相当容易。只需保持计数,并打印数字(可能是sys.stderr或记录器,而不是sys.stdout,如果您每次点击多个时使用sys.stdout来表示其他内容比方说,1000(或10,000或100,000 - 选择适合您使用的数字)。不打印每一行 - 如果单行快速处理,它会过快地模糊实际读取,并且您可能最终花费足够的时间进行打印,这实际上会显着减慢处理速度。

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