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?
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.
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.
Tags und Links python