2024-09-29 06:22:12 发布
网友
我有以下运行了很长时间的代码:
my_df['result'] = my_df.apply(lambda x: my_fun(x), axis = 1)
my_df是一个熊猫数据帧,我有数百万行。有没有办法找出完成工作的百分比?e、 g.在我的娱乐圈或其他地方放一份打印声明?谢谢!你知道吗
my_df
除非你正在做的事情会使你的进程与sys.stdout(罕见但似乎合理)或sys.stderr(明显罕见但技术上仍然不是不可能)脱节,否则你的想法就是在my_fun中放一个print语句就可以了。你知道吗
sys.stdout
sys.stderr
my_fun
当然,在my_fun中记录进程mid表达式是不可能的,例如my_fun调用一些other_fun需要很长时间。在这种情况下,您必须将打印置于other_fun。例如,如果要分别对每一行执行某些操作,可以在相关循环中的某个位置进行打印,相当容易地说出已完成的行数。只需保持计数,并打印数字(可能到sys.stderr或一个记录器,而不是sys.stdout,如果你使用sys.stdout做其他事情)每次它达到1000(或10000,或100000)的倍数,选择一个适合你使用的数字。不要打印每一行——如果一行很快就能处理,那么它会模糊过去,以至于无法真正读取,最后你可能会在打印上花费足够的时间,这实际上会有意义地减慢处理速度。你知道吗
other_fun
如果你在做一个需要考虑所有数据的操作,没有循环。。。您仍然可以在函数中执行进度报告,但是没有真正的方法来获得“已完成的行数”统计数据,而且要获得准确的百分比可能会更加困难。你知道吗
除非你正在做的事情会使你的进程与
sys.stdout
(罕见但似乎合理)或sys.stderr
(明显罕见但技术上仍然不是不可能)脱节,否则你的想法就是在my_fun
中放一个print语句就可以了。你知道吗当然,在
my_fun
中记录进程mid表达式是不可能的,例如my_fun
调用一些other_fun
需要很长时间。在这种情况下,您必须将打印置于other_fun
。例如,如果要分别对每一行执行某些操作,可以在相关循环中的某个位置进行打印,相当容易地说出已完成的行数。只需保持计数,并打印数字(可能到sys.stderr
或一个记录器,而不是sys.stdout
,如果你使用sys.stdout
做其他事情)每次它达到1000(或10000,或100000)的倍数,选择一个适合你使用的数字。不要打印每一行——如果一行很快就能处理,那么它会模糊过去,以至于无法真正读取,最后你可能会在打印上花费足够的时间,这实际上会有意义地减慢处理速度。你知道吗如果你在做一个需要考虑所有数据的操作,没有循环。。。您仍然可以在函数中执行进度报告,但是没有真正的方法来获得“已完成的行数”统计数据,而且要获得准确的百分比可能会更加困难。你知道吗
相关问题 更多 >
编程相关推荐