我有下面的代碼它運行很長一段時間:的Python:跟蹤作業的百分比處理
my_df['result'] = my_df.apply(lambda x: my_fun(x), axis = 1)
my_df
是大熊貓的數據幀,我有幾百萬行的。有沒有辦法找出工作完成的比例?例如在my_fun或某處放置打印語句?謝謝!
我有下面的代碼它運行很長一段時間:的Python:跟蹤作業的百分比處理
my_df['result'] = my_df.apply(lambda x: my_fun(x), axis = 1)
my_df
是大熊貓的數據幀,我有幾百萬行的。有沒有辦法找出工作完成的比例?例如在my_fun或某處放置打印語句?謝謝!
除非你正在做的事情會從sys.stdout
(罕見的,但合理的)或sys.stderr
(顯著罕見,但技術上仍然不是不可能的)斷開你的過程中,你的只是把打印語句在my_fun
想法應該只是罰款。
當然,您將無法在my_fun
中記錄進度中間表達式,例如my_fun
調用某些需要很長時間的other_fun
。在這種情況下,您必須將打印件放入other_fun
。例如,如果您正在分別對每行進行一些操作,則可以在相關循環中的某個位置放置一個打印文件,說明已經完成了多少行,相當容易。只要保持計數,並打印數字(如果你使用sys.stdout
作爲其他東西),每打出一個數字(可能爲sys.stderr
或記錄器,而不是sys.stdout
),每次碰到1000的倍數(或10,000或100,000)號碼,供您使用)。不要打印每一行 - 如果單行快速處理,它會模糊得太快而無法真正閱讀,並且最終可能花費足夠的時間來打印,實際上會減慢處理的速度。
如果你正在做一個單一的操作,需要考慮所有的數據,沒有循環......你仍然可以在函數中做進度報告,但沒有真正的方法來獲得「行數完成「的統計數據,並且要獲得準確的百分比可能會更困難。
你能提供一個例子如何在my_fun()中打印進度的百分比?由於它被lambda調用,我不知道它是如何跟蹤整個工作進度的...... – Edamame
不是更具體地知道'my_fun'實際上是什麼。只是...在你希望它打印什麼的函數的任何點添加一個打印語句。也許給該函數一個屬性以保持計數,以便在每次重複時不打印。 –