#python #stack-overflow #exit-code #cprofile
Вопрос:
Я пытаюсь профилировать довольно большой проект, используя следующий декоратор в моей функции main (), но в строке 9 я получаю «Процесс завершен с кодом выхода -1073741571 (0xC00000FD)», поиск в Google, похоже, относится к переполнению стека.
Означает ли это, что я не могу профилировать всю свою программу сразу? Я не использую рекурсию, что, по-видимому, является частой причиной этой проблемы. В моем проекте используются эволюционные алгоритмы, такие как NSGA3. Я заметил, что изменение количества итераций эволюции может привести к тому, что проблема не возникнет, но нет четкой закономерности (проблема возникает с 10 итерациями, но не с 200).
Есть ли способ получить больше информации, кроме кода выхода, чтобы помочь мне найти проблему? Я попытался проследить за переменными с помощью отладчика pycharm, но это не помогло, так как я действительно не знаю, что ищу. Проверка внутри pstats, выполнение выполняется init->self.init->>self.load_stats->>>arg.create_stats->>>>self.snapshot_stats->>>>>self.getstats, и на этом оно заканчивается кодом выхода -1073741571 (0xC00000FD).
Я знаю, что вы, ребята, ограничены без полного кода, но любые предложения о том, как я могу отследить проблему, приветствуются.
def inner(*args, **kwargs):
pr = cProfile.Profile()
pr.enable()
retval = fnc(*args, **kwargs)
pr.disable()
s="dirpath\profiling_cumulative.txt"
with open(s,'w') as stream:#io.StringIO()
sortby = 'cumulative'
ps = pstats.Stats(pr, stream=stream) #the program stops here
ps.sort_stats(sortby)
ps.print_stats()
s="dirpath\profiling_tottime.txt"
with open(s,'w') as stream:
sortby = 'tottime'
ps = pstats.Stats(pr, stream=stream).sort_stats(sortby)
ps.print_stats()
return retval