Python - Grenzen der Anzahl der Importe?

8

Ich habe tausende von benutzerdefinierten (zu '.so' kompilierten) Modulen, die ich gleichzeitig in python verwenden möchte. Jedes dieser Module hat eine durchschnittliche Größe ( 100 [KB] ).

Meine Frage ist, gibt es ein Limit für die Anzahl der Importe in python ? Was sind die Folgen von vielen imports ? (Wird dies beispielsweise viel Speicher erfordern)?

Kann ich 10.000 benutzerdefinierte Module importieren? 50.000 Module?

    
user3262424 15.05.2011, 23:43
quelle

3 Antworten

9

Es gibt kein Python-Limit für die Anzahl der Importe in einem Modul. Wenn es in einer bestimmten Implementierung ein Limit gibt, liegt das wahrscheinlich an den Ressourcengrenzen außerhalb des Python-Interpreters.

    
bignose 15.05.2011 23:50
quelle
7

Die Speichermenge, die von einem einzelnen importierten Modul verbraucht wird, ist mindestens so groß wie die Größe des Moduls auf der Festplatte. Der Overhead wird sowohl vom Betriebssystem selbst (zum Laden eines dynamischen Moduls) als auch von Pythons Overhead beim Importieren eines Moduls bestimmt.

Wenn Ihr Modul also im Durchschnitt 100kB groß ist, wird der Import von 10000 von ihnen mindestens 1 GB Adressraum aufnehmen. Der Import von 50000 von ihnen wird über 5 GB laufen. Verwenden Sie lieber ein Betriebssystem mit einem 64-Bit-Adressraum.

    
Greg Hewgill 16.05.2011 00:06
quelle
3

CPython hat keine Begrenzung für die Anzahl der Importe. Allerdings wird jede .so -Datei mit dlopen() geöffnet, was außerhalb der Kontrolle von Python liegt - ebenso wie die Symboltabelle, die weiter wachsen muss, um Informationen über Ihre Erweiterungsmodule zu sammeln. Ob diese ein praktisches Limit haben, liegt auch außerhalb von Python. CPython selbst nimmt nur wenig Speicher pro importiertem Modul auf, so lange Sie genug Speicher haben, sollten Sie in Ordnung sein.

    
Thomas Wouters 15.05.2011 23:49
quelle

Tags und Links