2010-06-01 13 views
5

Sto scrivendo un pacchetto python. Sto usando il concetto di plugin - dove ogni plugin è una specializzazione di una classe Worker. Ogni plugin è scritto come un modulo (script?) E generato in un processo separato.Diversi moduli in un pacchetto che importa un modulo comune

A causa della comunanza di base tra i plugin (ad esempio tutti estendere una classe base 'operaio'), il modulo plug-in si presenta in genere come questo:

import commonfuncs 

def do_work(data): 
    # do customised work for the plugin 
    print 'child1 does work with %s' % data 

In C/C++, dobbiamo includere le guardie, che evitare che un'intestazione venga inclusa più di una volta.

Ho bisogno di qualcosa del genere in Python e, in caso affermativo, come posso assicurarmi che commonfuncs non sia "incluso" più di una volta?

+0

Utilizzare il pulsante "101010" per formattare il codice correttamente. –

risposta

12

Nessuna preoccupazione: solo il primaimport di un modulo nel corso dell'esecuzione di un programma ne causa il caricamento. Ogni ulteriore importazione successiva alla prima preleva l'oggetto modulo da un dizionario "cache" (sys.modules, indicizzato da stringhe di nome modulo) e quindi è sia molto veloce e privo di effetti collaterali. Pertanto, non è necessaria alcuna protezione.

+0

Phew, questo è un sollievo sapere. +1 per la concisa (e risposta veloce). Qualche possibilità di inviare un link su dove posso leggere questo? – morpheous

+1

+1: "non è necessaria alcuna protezione" potrebbe forse essere indicato "le protezioni sono integrate". –

+0

http://docs.python.org/reference/simple_stmts.html#grammar-token-import_stmt –

Problemi correlati