Markdown software menghasilkan jumlah objek yang berlebihan. Dalam kasus ini, kita harus mencari area program kita yang memerlukan jumlah RAM yang signifikan.
Kesalahan Memori
Sebuah kesalahan memori terjadi ketika tugas habis penyimpanan.
Contoh Kesalahan Memori
Mari mulai dengan bagian kode yang sangat meminta untuk melihat masalah ini dalam aksi. Dalam skrip berikut, kita mulai dengan daftar kosong dan menambahkan string Python ke dalamnya menggunakan daftar nested. Dalam scenario ini, tiga lapisan daftar nested dengan 1.000 iterasi masing-masing digunakan. Hal ini menunjukkan bahwa daftar memiliki 1.000.000.000 pengulangan string "More" setelah program selesai.
Kode
Output
C:\code\Python\MemErr\venv\3K\Scripts\Python.exe C:/code/Python/MemErr/main.py
Traceback (terbaru):
File "C:/code/Python/MemErr/main.py", line 6, in
s.append("More")
MemoryError
Karena tidak ada modul yang terlibat dalam aplikasi ini, traceback error sangat mudah dipahami. Setelah traceback yang menunjukkan panggilan fungsi yang memicu masalah, kita melihat MemoryError dasar tetapi langsung.
Cara Menghandle Kesalahan Memori
Sistem Python yang tepat
Sekitar remedy paling sederhana untuk kesalahan memori memiliki hubungan dengan masalah sistem Python. Jika kita menginstal edisi 32-bit aplikasi Python pada mesin 64-bit, kita akan memiliki akses terbatas ke RAM sistem. Akses terbatas ini dapat mengakibatkan kesalahan memori pada program yang seharusnya dapat diolah oleh komputer kita dengan baik.
Perhatian Terhadap Loop Nested yang Besar
Jika instalasi Python sudah adekuat, tetapi masalah masih ada, maka mungkin perlu memperbaiki kode. Sayangnya, tidak ada solusi mudah untuk menghapus masalah ini kecuali dengan menganalisis dan optimalkan kode kita. Perhatikanlah besar-besaran loop nested dan setiap kali kita memuat dataset besar menjadi program dalam sekali, seperti contoh di atas.
Dalam kasus tersebut, membagi tugas menjadi kelompok biasanya diinginkan, sehingga RAM dapat dilepaskan antara panggilan. Contoh berikut menunjukkan bagaimana mengoptimalkan loop nested:
Cara Membatasi Penggunaan Memori dan CPU
Kita akan melihat cara membatasi penggunaan memori atau CPU oleh program untuk mencegah kesalahan memori. Kita dapat selesai dengan baik menggunakan modul Resource, seperti ditunjukkan dalam kode berikut:
Cara Mengontrol Penggunaan Memori
Output
Waktu batas telah terlewatkan oleh program
Sistem Keluar: 1
Kode ini mengatur ruang alamat untuk membatasi konsumsi memori.
Cara Menghindari Kesalahan Memori di Python
Kesalahan memori yang paling umum terjadi karena bekerja dengan dataset besar. Saat bekerja dengan proyek Machine Learning, kita seringkali menemui dataset besar yang membuat RAM komputer habis seketika. Kita dapat mengatasi masalah ini dengan menjalankan fungsi generator. Fungsi generator dapat diimplementasikan sebagai metode penggunaan sendiri ketika bekerja dengan dataset besar.
Kita dapat membagi dataset besar menjadi beberapa bagian menggunakan fungsi generator Python. Fungsi generator sangat membantu ketika bekerja pada proyek-proyek yang besar dan memiliki banyak baris data. Fungsi generator ini mengembalikan objek iterator. Data dapat di-looping menggunakan objek iterator ini.
Fungsi generator Python berbeda dengan fungsi reguler lainnya, karena termasuk kata kunci yield
di tempat biasanya menggunakan kata kunci return
. Namun, fungsi generator tidak berhenti ketika kata kunci yield
dipicu.