0

Я обновил свой Ubuntu до 16.04, и с ним Python 3.4 также был обновлен до новой версии Python 3.5.Почему Python 3.5 использует столько памяти? гораздо больше, чем Python 3.4

Я запустил свой код на Python, и я оцепенел. Он использовал в 1,5 раза больше памяти, чем раньше. Тот же код!

Объекты подсчета список из профилировщика памяти ниже:

=== Python 3.5 =============================================== 
          types | # objects | total size 
================================= | =========== | ============ 
        <class 'dict |  3526 |  2.93 MB 
         <class 'str |  24322 |  2.70 MB 
        <class 'type |  1255 |  1.22 MB 
        <class 'code |  8240 |  1.13 MB 
        <class 'tuple |  3257 | 215.20 KB 
         <class 'set |   566 | 203.81 KB 
        <class 'list |  1356 | 179.02 KB 
<class 'builtin_function_or_method|  2356 | 165.66 KB 
        <class 'weakref |  2005 | 156.64 KB 
     <class 'wrapper_descriptor |  1278 |  99.84 KB 
         <class 'int |  3488 |  96.62 KB 
       function (__init__) |   650 |  86.33 KB 
     <class 'method_descriptor |  1212 |  85.22 KB 
     <class 'getset_descriptor |  1179 |  82.90 KB 
       <class 'abc.ABCMeta |   70 |  66.92 KB 

=== Python 3.4 =============================================== 
          types | # objects | total size 
================================= | =========== | ============ 
        <class 'dict |  2306 |  2.12 MB 
         <class 'str |  16819 |  1.90 MB 
        <class 'type |   865 | 824.64 KB 
        <class 'code |  5586 | 785.75 KB 
         <class 'set |   390 | 159.81 KB 
        <class 'tuple |  2206 | 147.46 KB 
<class 'builtin_function_or_method|  2170 | 135.62 KB 
        <class 'weakref |  1444 | 112.81 KB 
        <class 'list |   717 |  97.89 KB 
     <class 'wrapper_descriptor |  1220 |  95.31 KB 
         <class 'int |  2753 |  75.85 KB 
     <class 'method_descriptor |  1067 |  75.02 KB 
     <class 'getset_descriptor |   799 |  56.18 KB 
       function (__init__) |   399 |  52.99 KB 
       <class 'abc.ABCMeta |   46 |  42.16 KB 
============================================================== 

Я хочу напомнить, - тот же самый код дал эти различные результаты.

Почему это произошло? Пожалуйста помоги. Заранее спасибо.

+1

Возможно, вам стоит оставить комментарий. – erip

+0

Также обратите внимание, что у вас есть другое количество объектов в Python 3.4 и 3.5. – erip

+0

Можете ли вы создать небольшой пример скрипта, который демонстрирует ту же разницу в использовании памяти? Учитывая количество объектов, я предполагаю, что ваш реальный код достаточно велик. – chepner

ответ

0

Я нашел проблему. Это была утечка памяти в библиотеках pycurl или libcurl или и то, и другое. Мое приложение занимало в 2 раза больше памяти, чем раньше.

Когда я заменил новые версии этих библиотек на старые, приложение вернулось к предыдущему использованию памяти.

Но на самом деле Python 3.5 использует + 10% памяти, чем Python 3.4 из-за новых реализованных функций. Это нормально.

Thank.

+0

Я имею в виду «чистый python 3.5» без импорта. –