Heim >Backend-Entwicklung >Python-Tutorial >Warum kann ich unter Ubuntu keine großen NumPy-Arrays zuweisen und wie kann ich das Problem beheben?
Speicherzuweisungseinschränkungen in Numpy für große Arrays
Beim Versuch, ein großes Numpy-Array unter Ubuntu 18 zuzuweisen, tritt ein Fehler auf: „Nicht möglich Array mit Form und Datentyp zuweisen“ tritt dieses Problem unter MacOS nicht auf. Der Grund für diese Ungleichheit liegt im Overcommit-Behandlungsmodus des Systems.
Overcommit-Behandlung und Speicherzuweisung
Der Overcommit-Behandlungsmodus bestimmt, wie das System Speicherzuweisungsanforderungen verwaltet. Im Standardmodus (0) prüft der Kernel, ob genügend physischer Speicher vorhanden ist, um die Zuweisungsanforderung auszuführen. Ist dies nicht der Fall, verweigert es die Zuteilung. Im Overcommit-Modus 1 lässt der Kernel immer Zuweisungen zu, unabhängig vom verfügbaren physischen Speicher.
Lösung
Um dieses Problem unter Ubuntu zu beheben, müssen Sie den Overcommit-Modus aktivieren 1. Führen Sie als Root den folgenden Befehl aus:
$ echo 1 > /proc/sys/vm/overcommit_memory
Dadurch wird der Overcommit-Handhabungsmodus auf 1 geändert, wodurch die Zuweisung des großen Numpy-Array.
Sparse Arrays und virtueller Speicher
Der Overcommit-Modus 1 kann für spärliche Arrays nützlich sein, bei denen nur ein kleiner Teil des zugewiesenen Speichers tatsächlich verwendet wird. Dies liegt daran, dass das System physischen Speicher nur für die Seiten festlegt, auf die explizit geschrieben wird, wodurch physischer Speicher gespart wird.
Warnung
Es ist wichtig, dies im Overcommit-Modus zu beachten 1 große Zuweisungen zulässt, kann es zu potenzieller Systeminstabilität kommen, wenn der zugewiesene Speicher den verfügbaren physischen Speicher übersteigt. Verwenden Sie Overcommit-Modus 1 mit Vorsicht und überwachen Sie die Speichernutzung Ihres Systems genau.
Das obige ist der detaillierte Inhalt vonWarum kann ich unter Ubuntu keine großen NumPy-Arrays zuweisen und wie kann ich das Problem beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!