Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapa Saya Tidak Boleh Memperuntukkan Tatasusunan NumPy yang Besar pada Ubuntu Walaupun Memori Mencukupi?
Apabila memperuntukkan memori penting kepada tatasusunan Numpy pada Ubuntu 18, pengguna mungkin menghadapi masalah ralat seperti "Tidak dapat memperuntukkan tatasusunan dengan bentuk dan jenis data." Isu ini timbul walaupun mempunyai memori yang mencukupi dan ia tidak diperhatikan pada MacOS.
Isu ini berpunca daripada mod overcommit lalai (0) pada Ubuntu . Dalam mod ini, kernel mengehadkan peruntukan memori untuk mengelakkan halaman fizikal yang terlalu komit. Ini menjadi kebimbangan apabila memperuntukkan memori untuk tatasusunan bersaiz besar seperti yang ditentukan, yang memerlukan kira-kira 282 GB.
Untuk memperuntukkan tatasusunan dengan jayanya, anda boleh tukar mod terlebih komitmen kepada 1. Ini secara berkesan membolehkan mod "sentiasa terlebih komitmen", membenarkan peruntukan tidak kira sama ada memori fizikal mencukupi.
Untuk menetapkan mod terlebih komitmen kepada 1 sebagai akar, laksanakan arahan berikut:
$ echo 1 > /proc/sys/vm/overcommit_memory
Penyelesaian ini membolehkan anda memperuntukkan ruang untuk tatasusunan yang jarang atau kebanyakannya kosong. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa anda harus menulis kepada tatasusunan secara eksplisit untuk memperuntukkan halaman fizikal di mana data wujud. Ini boleh menjadi penting untuk penggunaan memori yang cekap.
Atas ialah kandungan terperinci Mengapa Saya Tidak Boleh Memperuntukkan Tatasusunan NumPy yang Besar pada Ubuntu Walaupun Memori Mencukupi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!