Esportazioni. È quindi possibile fare:
from multiprocessing.dummy import list
... che sembra essere il normale list
.
Senza questa riga, non ci sarebbe list
nel pacchetto multiprocessing.dummy
.
È ragionevole disporre di un'API uniforme tra i pacchetti. Supponiamo che tutti i pacchetti offrano una classe list
. Il pacchetto a
sceglie di fornire un'implementazione personalizzata, tuttavia il pacchetto b
desidera utilizzare list
da __builtins__
.
powerful/__init__.py:
from powerfulinternals import PowerfulList as list
from simple.simpleinternals import Something as whoo
simple/__init__.py:
list = list
from simpleinternals import Something as whoo
application.py:
try:
import powerful as api
else:
import simple as api
mylist = api.list()
woot = api.whoo()
C'è motivo in più per fare queste cose. Ad esempio per rendere esplicito ciò che stai usando.
list = list
può anche essere visto come una dichiarazione "se si desidera modificare il tipo di liste che sto usando, cambiare qui."
In questo caso particolare, è il primo. Il list
e dict
sono esposti come:
manager = multiprocessing.dummy.Manager()
l = manager.list()
d = manager.dict()
E la definizione di Manager
è:
def Manager():
return sys.modules[__name__]
cioè Manager.list = list
.
fonte
2012-01-13 13:00:15
(+1) per la domanda interessante. Dato che il 'multiprocessing' è stato introdotto in Python 2.6, non sembra molto probabile che il codice sia molto vecchio. – NPE
Grazie per il commento! Ho pensato che 'multiprocessing' fosse abbastanza vecchio per usarlo in Python 2.4 dato che non ci sono note" Since 2.6 "in docs [1] :( [1] http://docs.python.org/dev/library/multiprocessing .html – darkk
Non penso che importi davvero qui, ma c'è una nota "New in version 2.6." sull'intero modulo: http://docs.python.org/library/multiprocessing.html – NPE