Apabila mencipta tatasusunan NumPy yang besar dengan jenis data 'uint8' pada Ubuntu 18, anda boleh menghadapi ralat:
numpy.core._exceptions.MemoryError: Unable to allocate array with shape and data type uint8
Ini berlaku walaupun sistem mempunyai memori yang mencukupi dan tidak mengalami isu yang sama pada MacOS.
Punca isu ini ialah mod pengendalian overcommit sistem pengendalian. Secara lalai, overcommit dinyahdayakan, yang bermaksud kernel akan menolak peruntukan yang melebihi memori yang tersedia.
Untuk menyelesaikannya:
Dengan lebih agresif didayakan, sistem membenarkan peruntukan walaupun melebihi memori fizikal. Ini kerana kernel menjangkakan bahawa hanya sebahagian kecil daripada memori yang diperuntukkan akan digunakan secara aktif.
Walaupun terlalu komitmen yang agresif boleh menyelesaikan isu peruntukan, ia harus digunakan dengan berhati-hati:
Dengan komit berlebihan agresif didayakan, kod berikut harus berfungsi:
import numpy as np a = np.zeros((156816, 36, 53806), dtype='uint8') print(a.nbytes) # Output: 303755101056
Atas ialah kandungan terperinci Mengapa Saya Tidak Boleh Mencipta Tatasusunan NumPy Besar pada Ubuntu, dan Bagaimana Saya Boleh Membetulkan Ralat Peruntukan Memori?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!