Lors de la création d'un grand tableau NumPy avec le type de données 'uint8' sur Ubuntu 18, vous pouvez rencontrez l'erreur :
numpy.core._exceptions.MemoryError: Unable to allocate array with shape and data type uint8
Cela se produit même si le système dispose de suffisamment de mémoire disponible et ne rencontre pas le même problème sur MacOS.
La cause première de ce problème est le mode de gestion de surcharge du système d'exploitation. Par défaut, la surcommission est désactivée, ce qui signifie que le noyau refusera les allocations qui dépassent la mémoire disponible.
Pour résoudre ce problème :
Avec le surcommit agressif activé, le système autorise les allocations même si elles dépassent la mémoire physique. En effet, le noyau s'attend à ce que seule une fraction de la mémoire allouée soit activement utilisée.
Bien qu'un surengagement agressif puisse résoudre le problème d'allocation, il doit être utilisé avec prudence :
Avec le surengagement agressif activé, le code suivant devrait travail :
import numpy as np a = np.zeros((156816, 36, 53806), dtype='uint8') print(a.nbytes) # Output: 303755101056
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!