Size: a a a

2019 December 04

💭П

💭 Руслан Прохоров in rannts
Друзья, у меня проблема и мне нужна помощь.

У меня есть скрипт, который запускаеться из другого скрипта. Выглядит это примерно так:
runner = SingleTestCase_Runner(configFilePath=config_file_path)
runner.reporter.createStandardRunnerLogger(name_log, False)
runner.executeTestCase(filePath=testFile)


где testFile - это и есть мой тестовый скрипт. Сейчас возникла проблема с тем, что внутри всей этой "балолайки" течет память. Скрипт съедает до 14 Гб!!!! Как мне Хорошо и правильно отплрофилировать это дело?
источник

🦉K

🦉 Neil Kulikov in rannts
💭 Руслан Прохоров
Друзья, у меня проблема и мне нужна помощь.

У меня есть скрипт, который запускаеться из другого скрипта. Выглядит это примерно так:
runner = SingleTestCase_Runner(configFilePath=config_file_path)
runner.reporter.createStandardRunnerLogger(name_log, False)
runner.executeTestCase(filePath=testFile)


где testFile - это и есть мой тестовый скрипт. Сейчас возникла проблема с тем, что внутри всей этой "балолайки" течет память. Скрипт съедает до 14 Гб!!!! Как мне Хорошо и правильно отплрофилировать это дело?
А что мешает его импортировать, как модуль и вызвать функцию точки входа? или через execfile(...)  дёрнуть
источник

💭П

💭 Руслан Прохоров in rannts
🦉 Neil Kulikov
А что мешает его импортировать, как модуль и вызвать функцию точки входа? или через execfile(...)  дёрнуть
В этом случае, не загрузится Remote test Framework, на котором это всё работает (
источник

🦉K

🦉 Neil Kulikov in rannts
💭 Руслан Прохоров
Друзья, у меня проблема и мне нужна помощь.

У меня есть скрипт, который запускаеться из другого скрипта. Выглядит это примерно так:
runner = SingleTestCase_Runner(configFilePath=config_file_path)
runner.reporter.createStandardRunnerLogger(name_log, False)
runner.executeTestCase(filePath=testFile)


где testFile - это и есть мой тестовый скрипт. Сейчас возникла проблема с тем, что внутри всей этой "балолайки" течет память. Скрипт съедает до 14 Гб!!!! Как мне Хорошо и правильно отплрофилировать это дело?
А у тебя чисто питон или ты C-шные библиотеки дёргаешь?
источник

💭П

💭 Руслан Прохоров in rannts
🦉 Neil Kulikov
А у тебя чисто питон или ты C-шные библиотеки дёргаешь?
Питон и внутри есть C# длл, есть C++ длл )
источник

ИК

Иван Кривошеев in rannts
Так течет сам питон или сишная часть?
источник

🦉K

🦉 Neil Kulikov in rannts
💭 Руслан Прохоров
Питон и внутри есть C# длл, есть C++ длл )
Я вангую, что C++ выдлеляет память, когда передаёт результат, а питон его не удаляет. А вообще попробуй pdb - там вроде есть возможность отследить утечки
источник

ИК

Иван Кривошеев in rannts
Или неизвестно?
источник

💭П

💭 Руслан Прохоров in rannts
Иван Кривошеев
Так течет сам питон или сишная часть?
Так это и нужно узнать )
источник

ИК

Иван Кривошеев in rannts
💭 Руслан Прохоров
Так это и нужно узнать )
Хмм, а есть возможность позапускать dll отдельно? Просто из питона это дебажить - не очень тривиально
источник

💭П

💭 Руслан Прохоров in rannts
Иван Кривошеев
Хмм, а есть возможность позапускать dll отдельно? Просто из питона это дебажить - не очень тривиально
нет
источник

🦉K

🦉 Neil Kulikov in rannts
Иван Кривошеев
Так течет сам питон или сишная часть?
У меня были проблемы такого толка, когда я в C++ выделял память и передавал её в питон, интерпретируя как тело numpy массива. Почему то он не умел их освобождать, правда потом я нашушлил решение
источник

ИК

Иван Кривошеев in rannts
Ну тогда gdb, там есть модуль для питона и он позволяет лезть в кишки
источник

KK

Kirill (Cykooz) Kuzminykh in rannts
Я последнее время использовал muppy, что бы отслеживать устечки памяти за счёт "подвисших" питонячих объектов. Если эта штука не покажет рост памяти за счёт питонячих объектов, то значит утечка во внешних либах, или фрагментация памяти питона.
источник

ИК

Иван Кривошеев in rannts
И смотреть что там в gc. Если там все хорошо, тогда уже отлаживать сишную часть
источник

ИК

Иван Кривошеев in rannts
Kirill (Cykooz) Kuzminykh
Я последнее время использовал muppy, что бы отслеживать устечки памяти за счёт "подвисших" питонячих объектов. Если эта штука не покажет рост памяти за счёт питонячих объектов, то значит утечка во внешних либах, или фрагментация памяти питона.
Ну или модуль gc
источник

💭П

💭 Руслан Прохоров in rannts
Иван Кривошеев
Ну тогда gdb, там есть модуль для питона и он позволяет лезть в кишки
А его разви на Windows завезли?
источник

ИК

Иван Кривошеев in rannts
💭 Руслан Прохоров
А его разви на Windows завезли?
Аааа, это винда)) ну есть же у вас некий win debag
источник

in

ildar nizamov in rannts
шёл 2019 год. в MSVC таки завезли asan

https://devblogs.microsoft.com/cppblog/addresssanitizer-asan-for-windows-with-msvc/
источник

💭П

💭 Руслан Прохоров in rannts
И чё мне с ним делать?
источник