Saltar al contenido

Importaciones innecesarias: Tenga cuidado con lo que importa.

Estaba probando mi script con varios términos que suelo usar en las aplicaciones PyQt4 como MinimumExpanding y NoEditTriggers:

12345 python import_searcher.py -s MinimumExpanding PyQt4.Qt.QSizePolicy.MinimumExpanding =3 PyQt4.QtGui.QSizePolicy.MinimumExpanding =3 PyQt4.Qwt5.qplt.QSizePolicy.MinimumExpanding =3

pitón

Importaciones innecesarias: Tenga cuidado con lo que importa.
Importaciones innecesarias: Tenga cuidado con lo que importa.

¿Notas algo extraño en la salida anterior? Parece que MinimumExpandings se muestra en dos lugares casi idénticos: PyQt4.Qt y PyQt.QtGui. Naturalmente, pensé que había un error en mi script, pero después de un poco de depuración y lectura encontré la siguiente joya en la página de Wikipedia de PyQt4:

Por lo tanto, el uso del módulo PyQt4.Qt es en realidad redundante y sólo por conveniencia. Como resultado, en realidad importamos un montón de módulos voluminosos y extraños, como QtDesigner, QtWebKit y QtHelp.

Por ejemplo, supongamos que su aplicación sólo utiliza el módulo PyQt4.QtGui, y usted decide erróneamente que necesita algo de PyQt4.Qt. Esta importación simple podría esencialmente duplicar su uso de memoria [1]:

12345678910111213141516171819202122232425Línea # Mem Uso Incrementar Línea Contenido========================================== 1 @perfil 2 def import_qt_module_by_module(): 3 #desde PyQt4 import QtCore 4 #desde PyQt4 import QtDBus 5 6. 953 MB 0.000 MB #desde PyQt4 import QtDeclarative 6 12.844 MB 5. 891 MB de PyQt4 import QtGui 7 #de PyQt4 import QtHelp 8 #de PyQt4 import QtMultimedia 9 #de PyQt4 import QtNetwork 10 #de PyQt4 import QtOpenGL 11 #de PyQt4 import QtScript 12 #de PyQt4 import QtScriptTools 13 #de PyQt4 import QtSql 14 #de PyQt4 import QtSvg 15 #de PyQt4 import QtTest 16 #de PyQt4 import QtWebKit 17 #de PyQt4 import QtXml 18 #de PyQt4 import QtXmlPatterns 19 #de PyQt4 import phonon 20 #de PyQt4 import QtAssitant 21 #de PyQt4 import QtDesigner 22 #de PyQt4 import QtAxContainer 23 19. 387 MB 6.543 MB de PyQt4 import Qt

Observe que con sólo importar $0027PyQt4.Qt$0027 aumentó el uso de la memoria de la aplicación en 6.543 MB . Esto podría ser costoso dependiendo de cuánta memoria su aplicación ya estaba usando y cuánta tiene disponible su sistema. Si bien esta situación se refiere a cifras más pequeñas, las múltiples importaciones innecesarias pueden agravarse fácilmente, lo que da lugar a problemas más importantes de uso de la memoria.