Notez ces lignes dans multiprocessing
package multiprocessing
de bibliothèques standard:
dict = dict list = list
À quoi __builtins__
de __builtins__
certains noms déjà disponibles sur __builtins__
dans la scope du module? Que tente-t-il de réaliser? J’ai cherché une explication dans le blâme de git, mais cette validation était importante et il n’y avait aucun commentaire pertinent.
Ce code se produit dans multiprocessing.dummy
, une “fausse” version du multiprocessing
qui implémente la fonctionnalité avec les threads. Si vous regardez quelques lignes, vous verrez
def Manager(): return sys.modules[__name__]
multiprocessing.dummy
implémente Manager
tant que fonction qui renvoie simplement le module multiprocessing.dummy
lui-même, de sorte que l’object module multiprocessing.dummy
doit fournir l’API d’un object Manager multiprocessing. Les lignes
dict = dict list = list
copier les liaisons pour les noms de dict
et de list
de l’espace de nommage intégré dans l’espace de noms du module, afin de pouvoir le faire
m = multiprocessing.dummy.Manager() d = m.dict()
comme si vous aviez un vrai multiprocessing.Manager()
.