Heim >Backend-Entwicklung >Python-Tutorial >Warum kann ich unter Ubuntu keine großen NumPy-Arrays zuweisen, obwohl ausreichend Speicher vorhanden ist?
Bei der Zuweisung erheblichen Speichers zu Numpy-Arrays unter Ubuntu 18 können Benutzer auf ein Problem stoßen Fehler wie „Array konnte nicht mit Form und Datentyp zugewiesen werden.“ Dieses Problem tritt auf, obwohl ausreichend Arbeitsspeicher vorhanden ist, und wird unter MacOS nicht beobachtet.
Das Problem ist auf den standardmäßigen Overcommit-Modus (0) unter Ubuntu zurückzuführen . In diesem Modus schränkt der Kernel die Speicherzuweisung ein, um eine Überbelegung physischer Seiten zu verhindern. Dies wird zu einem Problem, wenn Speicher für große Arrays wie das angegebene zugewiesen wird, das etwa 282 GB erfordert.
Um das Array erfolgreich zuzuweisen, können Sie Folgendes tun Ändern Sie den Overcommit-Modus auf 1. Dadurch wird effektiv der Modus „Immer Overcommit“ aktiviert, der die Zuweisung unabhängig davon ermöglicht, ob der physische Speicher vorhanden ist ausreichend.
Um den Overcommit-Modus als Root auf 1 festzulegen, führen Sie den folgenden Befehl aus:
$ echo 1 > /proc/sys/vm/overcommit_memory
Dies Mit der Lösung können Sie Speicherplatz für Arrays zuweisen, die dünn besetzt oder größtenteils leer sind. Es ist jedoch wichtig zu beachten, dass Sie explizit in das Array schreiben sollten, um physische Seiten zuzuweisen, auf denen Daten vorhanden sind. Dies kann für eine effiziente Speichernutzung von entscheidender Bedeutung sein.
Das obige ist der detaillierte Inhalt vonWarum kann ich unter Ubuntu keine großen NumPy-Arrays zuweisen, obwohl ausreichend Speicher vorhanden ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!