Cprofile принимает много памяти -- python поле с участием memory поле с участием cprofile пол Связанный проблема

cProfile taking a lot of memory


1
vote

проблема

русский

Я пытаюсь профилировать мой проект в Python, но у меня заканчивается память.

Сам мой проект довольно памяти, но даже пробеги полумана с возможностью погибания с «MemoryError» при запуске под CPROFIL.

Делая меньшие прогоны - это не хороший вариант, потому что мы подозреваем, что время выполнения масштабируется сверхлинейно, и мы пытаемся обнаружить, какие функции доминируют во время больших прогонов.

Почему Cprofile принимает столько памяти? Могу ли я занять это меньше? Это нормально?

Английский оригинал

I am attempting to profile my project in python, but I am running out of memory.

My project itself is fairly memory intensive, but even half-size runs are dieing with "MemoryError" when run under cProfile.

Doing smaller runs is not a good option, because we suspect that the run time is scaling super-linearly, and we are trying to discover which functions are dominating during large runs.

Why is cProfile taking so much memory? Can I make it take less? Is this normal?

</div
        

Список ответов

1
 
vote

<сильный> Обновление : Поскольку Cprofile встроен в текущие версии Python (расширение _lsprof) он должен использовать главный распределитель. Если это не работает для вас, Python 2.7.1 имеет <код> NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:@"YOUR_URL"]]; // Check the cache. NSCachedURLResponse *cachedResponse = [[NSURLCache sharedURLCache] cachedResponseForRequest:request]; NSLog(cachedResponse ? @"Cached response found!" : @"No cached response found."); //Load cache [NSURLConnection sendSynchronousRequest:request returningResponse:NULL error:NULL]; 4 параметр компилятора, который заставляет его переключиться на использование <код> NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:@"YOUR_URL"]]; // Check the cache. NSCachedURLResponse *cachedResponse = [[NSURLCache sharedURLCache] cachedResponseForRequest:request]; NSLog(cachedResponse ? @"Cached response found!" : @"No cached response found."); //Load cache [NSURLConnection sendSynchronousRequest:request returningResponse:NULL error:NULL]; 5 во время выполнения. Это хорошо, так как это позволяет избежать необходимости использовать файл умолчаний. Вы можете создать версию только для профилирования, а затем запустить приложение на Python под Valgrind смотреть на все ассигнованиях профилировщика, а также любые расширения C, использование которых пользовательские схемы распределения.

<Р> (Остальной оригинальный ответ следующим образом): <Р> Может быть, попытаться увидеть, где распределение собирается. Если у вас есть место в вашем коде, где вы можете периодически дамп использования памяти, вы можете использовать <код> NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:@"YOUR_URL"]]; // Check the cache. NSCachedURLResponse *cachedResponse = [[NSURLCache sharedURLCache] cachedResponseForRequest:request]; NSLog(cachedResponse ? @"Cached response found!" : @"No cached response found."); //Load cache [NSURLConnection sendSynchronousRequest:request returningResponse:NULL error:NULL]; 6 для просмотра распределения:
 <код> NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:@"YOUR_URL"]];      // Check the cache.     NSCachedURLResponse *cachedResponse = [[NSURLCache sharedURLCache] cachedResponseForRequest:request];     NSLog(cachedResponse ? @"Cached response found!" : @"No cached response found.");     //Load cache     [NSURLConnection sendSynchronousRequest:request returningResponse:NULL error:NULL]; 7  
 

Updated: Since cProfile is built into current versions of Python (the _lsprof extension) it should be using the main allocator. If this doesn't work for you, Python 2.7.1 has a --with-valgrind compiler option which causes it to switch to using malloc() at runtime. This is nice since it avoids having to use a suppressions file. You can build a version just for profiling, and then run your Python app under valgrind to look at all allocations made by the profiler as well as any C extensions which use custom allocation schemes.

(Rest of original answer follows):

Maybe try to see where the allocations are going. If you have a place in your code where you can periodically dump out the memory usage, you can use guppy to view the allocations:

import lxml.html from guppy import hpy  hp = hpy() trees = {} for i in range(10):     # do something     trees[i] = lxml.html.fromstring("<html>")     print hp.heap()      # examine allocations for specific objects you suspect     print hp.iso(*trees.values()) 
</div
 
 
     
     

Связанный проблема

2  Pyproj Пакет Установка Proj_dir Переменная  ( Pyproj package installation proj dir variable ) 
Я пытаюсь установить <код> pyproj , хотя получаю <код> Proj executable not found. Please set PROJ_DIR variable ошибки. Команда <Код> $ pipenv install pyp...

1  dataframe или sqlctx (sqlcontext) сгенерировали "попытка вызвать пакет" ошибка  ( Dataframe or sqlctx sqlcontext generated trying to call a package error ) 
Я использую Spark 1.3.1. В Pyspark я создал Dataframe от RDD и зарегистрировал схему, что-то вроде этого: <код> dataLen=sqlCtx.createDataFrame(myrdd, ["id",...

1  Python: Tkinter не отображает мой образ или интерфейс  ( Python tkinter not displaying my image or ui ) 
Я пытаюсь создать пользовательский интерфейс с изображением в правом верхнем углу. Вот мой код: <код> import tkinter as tk import urllib.request import base...

2  Spotipy Authentication не возвращает токен?  ( Spotipy authentication not returning token ) 
Все подходящие люди, я прочитал всю документацию, которую я могу найти в методах аутентификации Spotipy, и я собрал небольшой кусок кода, чтобы проверить его,...

0  Python получает глобальные модули вместо местных внутри виртуальны  ( Python is getting global modules instead of local ones inside of virtualenv ) 
Это мой первый раз, используя virtualenv и mysqldb, и я получаю странную ошибку. После того, как я настрою этот Virtualenv, я установил MySQLDB изнутри Virtua...

1  Используйте файл в качестве аргумента для функции, которая подсчитывает, создает счет для каждой буквы в текстовом файле  ( Use a file as an argument for a function that counts creates a count for each le ) 
Моя программа прямо сейчас работает только для первого символа в текстовом файле и итерации бесконечно. Например, если первая буква в текстовом файле D, прогр...

0  Использование Pybind11 на MacBook Pro  ( Using pybind11 on macbook pro ) 
Я пытаюсь использовать Pybind11 на MacBook, и я пытаюсь сделать так, как было написано в https://pybind11.readtheDocs.io/en/stable/basics.html я установил C...

0  Групповые пакеты на сервере трафика  ( Timing packets on a traffic server ) 
У меня есть прокси-сервер трафика, который является дополнительным ходом на сеть и обрабатывает большое количество трафика. Я хотел бы рассчитать стоимость ...

48  Ошибка auth_user с django 1.8 и syncdb / migrate  ( Auth user error with django 1 8 and syncdb migrate ) 
При обновлении в Django 1.8 (с zc.buildout) и запуском SyncDB или миграция, я получаю это сообщение: <Код> django.db.utils.ProgrammingError: relation "auth_...

0  Ubuntu Supervisor Импорт модулей Python модулей  ( Ubuntu supervisor import python modules error ) 
Я использую супервизор для запуска Websocket Django в системе запуска. Когда я запускаю руководитель, он будет поднять ModulenotfoundError: Нет модуля с ...

0  Почему мой скрипт Cron работает только один раз?  ( Why my cron script running just once ) 
Я пытаюсь запустить простой сценарий Python, используя команды cron. Я написал код, чтобы запускать свой скрипт Python в каждом 1 минуте и записывать вывод в ...

3  Compile United с кодом ошибки 1 в / tmp / pip_build_root / uwsgi  ( Compile failed with error code 1 in tmp pip build root uwsgi ) 
Я пытаюсь следить за руководством в http: // uwsgi -docs.readtheDocks.org/en/latest/tutorials/django_and_nginx.html . Я получил все, что все работает TOHTTP:...

25  Найти сломанные симличины с Python  ( Find broken symlinks with python ) 
Если я звоню <код> os.stat() на сломанный <код> 9988777663 , python бросает <код> OSError исключение. Это делает его полезным для их поиска. Тем не менее, е...

12  Редактировать с помощью контекстного меню IDLE (Python GUI) в Windows & NBSP; 7  ( Edit with idle python gui context menu on windowsnbsp7 ) 
Под Windows XP у меня есть контекстное введение меню «Редактировать с простым» для python исходные файлы. Я пытался сделать эту работу под Windows 7 (32-бит...

2  Heroku Установить Letsencrypt - SU: ДОЛЖЕН БУДЬТ  ( Heroku install letsencrypt su must be run from a terminal ) 
Я пытаюсь создать сертификат SSL для Мой сайт , чтобы получить зеленый замок. . Во время передачи, как это сделать (никогда не делал ничего с сертификатами ...

Связанный проблема

2  Pyproj Пакет Установка Proj_dir Переменная 
1  dataframe или sqlctx (sqlcontext) сгенерировали "попытка вызвать пакет" ошибка 
1  Python: Tkinter не отображает мой образ или интерфейс 
2  Spotipy Authentication не возвращает токен? 
0  Python получает глобальные модули вместо местных внутри виртуальны 
1  Используйте файл в качестве аргумента для функции, которая подсчитывает, создает счет для каждой буквы в текстовом файле 
0  Использование Pybind11 на MacBook Pro 
0  Групповые пакеты на сервере трафика 
48  Ошибка auth_user с django 1.8 и syncdb / migrate 
0  Ubuntu Supervisor Импорт модулей Python модулей 
0  Почему мой скрипт Cron работает только один раз? 
3  Compile United с кодом ошибки 1 в / tmp / pip_build_root / uwsgi 
25  Найти сломанные симличины с Python 
12  Редактировать с помощью контекстного меню IDLE (Python GUI) в Windows & NBSP; 7 
2  Heroku Установить Letsencrypt - SU: ДОЛЖЕН БУДЬТ 



© 2021 www.qaru.top All Rights Reserved. Q&A House все права защищены


Licensed under cc by-sa 3.0 with attribution required.