Я использую Python pprofile от vpelletier (https://github.com/vpelletier/pprofile).
Я получил огромный вывод в 130293 строки. Я нашел проблему, глядя на следующее:
83| 430| 0.0129273| 3.00635e-05| 0.04%| df_func.loc[:, col_name] = new_ser
(call)| 430| 12.4897| 0.0290459| 35.87%|# \pandas\core\indexing.py:199 __setitem__
Просмотря догадался , что строка 83 вызывает pandas \ indexing.py: 199 _setitem__, что занимает 12,4 секунды. Это не идеально, но по крайней мере я знаю, какая строка кода, которую я написал, занимает время только потому, чтофактическая строка, которая занимает время, сразу же появляется в журнале.
У меня есть еще один фрагмент из вывода профиля; (последняя строка, которая занимает 6,11 секунды).
313| 448| 0.0039854| 8.89599e-06| 0.01%| def _setitem_with_indexer(self, indexer, value):
314| 448| 0.00299239| 6.67945e-06| 0.01%| self._has_valid_setitem_indexer(indexer)
(call)| 448| 0.00298953| 6.67306e-06| 0.01%|# \pandas\core\indexing.py:281 _has_valid_setitem_indexer
315| 0| 0| 0| 0.00%|
316| 0| 0| 0| 0.00%| # also has the side effect of consolidating in-place
317| 448| 0.00299144| 6.67732e-06| 0.01%| from pandas import Series
(call)| 448| 0.0189428| 4.22831e-05| 0.05%|# <frozen importlib._bootstrap>:1009 _handle_fromlist
318| 0| 0| 0| 0.00%|
319| 448| 0.00398803| 8.90185e-06| 0.01%| info_axis = self.obj._info_axis_number
320| 0| 0| 0| 0.00%|
321| 0| 0| 0| 0.00%| # maybe partial set
322| 448| 0.0069797| 1.55797e-05| 0.02%| take_split_path = self.obj._is_mixed_type
(call)| 448| 6.11485| 0.0136492| 17.56%|# \pandas\core\generic.py:5276 _is_mixed_type
Не могу на всю жизньиз меня выяснить, какая строка кода называется функцией _setitem_with_indexer в pandas. Я хочу, чтобы строка кода original , которую я написал, была идентифицирована, которая в свою очередь вызывает эту функцию pandas, которая занимает 6.11секунд.
Я надеюсь, что вопрос ясен.
PS: Любые идеи о том, как я могу написать df_func.loc[:, col_name] = new_ser
лучше, чтобы он работал быстрее, тоже приветствуются.
Второйсвязанный вопрос: есть ли у line_profiler (https://github.com/rkern/line_profiler) эта ссылка?Я не могу установить профилировщик строки kern на win 10.