recherche

Maison  >  Questions et réponses  >  le corps du texte

如何理解python中的池化

在阅读雨痕的python学习笔记第二版中有这样一段话,并没有更多的解释,搜索之后也没有更多相关的资料。
个人感觉是对应字符串对象的一些属性进行修改或者精简,想请教一下大家XD~

PHP中文网PHP中文网2810 Il y a quelques jours556

répondre à tous(3)je répondrai

  • 迷茫

    迷茫2017-04-17 17:35:18

    D'une manière générale, le pooling est un mécanisme de pré-allocation, tel qu'un pool de mémoire, un pool de threads, etc., qui vise à réduire la surcharge causée par les demandes fréquentes de ressources pendant le fonctionnement, mais ce n'est évidemment pas ce que cela signifie, du moins d'après le contexte Regardez, le regroupement dans les notes fait référence à deux significations différentes, l'une concerne les attributs de la classe et l'autre la disposition de la mémoire des ressources constantes.
    1) __name__ et __doc__ doivent faire référence aux attributs de la classe, et non aux attributs de l'objet instancié, tel que

    from PyQt4.QtCore import *
    
    print QString.__doc__
    
    a = QString("hello")
    
    print a.__doc__
    

    Le __doc__ correspondant peut être indexé en utilisant la classe QString ici. Chaque objet instancié peut également accéder à cet attribut, mais cela économise évidemment des ressources pour stocker les données dans la classe et être partagées par tous les objets instanciés.

    2) Personnellement, je pense que l'exemple de stagiaire n'est pas très bon. Ce stagiaire devrait être une méthode de String de Java (ou il a été introduit à l'origine par Java en référence à Python. Quant à savoir qui vient en premier, il n'y a pas de méthode. moyen de le savoir), voir

    http://blog.sina.com.cn/s/blog_69dcd5ed0...

    Python utilise id() pour marquer les informations d'adresse de chaque objet. Par conséquent, si les id() de deux objets sont différents, cela signifie que les adresses mémoire des deux objets sont différentes en termes de disposition de la mémoire (mais c'est le contenu peut être le même). Par conséquent, afin de rendre identique l'espace mémoire référencé par les objets avec le même contenu, utilisez le mot-clé intern pour atteindre cet objectif et économiser de la mémoire. Voir l'exemple ci-dessous

    .
    b = "abc"
    a = "".join(["a", "b", "c"])
    
    
    print a == b # 内容是一致的,b是直接引用一个字符串常量,但a是经过计算后、也就是在运行的过程中生成的
    print id(a) == id(b) #但是id不一样
    
    a = intern(a) #使用intern处理下,id一样了
    
    print id(a) == id(b)

    répondre
    0
  • PHPz

    PHPz2017-04-17 17:35:18

    Il est recommandé de jeter un œil à l'analyse du code source Python
    Le pool d'objets est une technologie largement utilisée dans Python Si vous regardez directement le code source, vous aurez une compréhension plus claire.

    répondre
    0
  • PHPz

    PHPz2017-04-17 17:35:18

    Pour faire simple, les valeurs int comprises entre -128 et plus 127 sont globalement uniques, quel que soit le nombre de lectures et d'écritures du programme, ces objets communs sont conservés par l'interpréteur python pour économiser de la mémoire. les types ont des pools différents, caractères Pour les chaînes, les caractères simples couramment utilisés sont généralement placés dans le pool, et inn est une interface d'exploitation pour le pool.

    répondre
    0
  • Annulerrépondre