J'ai juste compris que 2 boucles imbriquées fonctionnent très lentement en Python. La charge de l'UC reste autour de 0% mais elle fonctionne toujours lentement. Pourquoi? Comment puis-je résoudre ce problème?Les boucles imbriquées fonctionnent trop lentement en Python
Initialisation (ne devrait pas commenter pour le faire fonctionner rapidement):
a = imresize(image, (maxY, maxX), 'lanczos')
b = imresize(image, (maxY * 2, maxX), 'lanczos')
Code lent:
result = np.empty((maxY, maxX, 3), dtype=np.uint16)
for y in range(maxY):
for x in range(maxX):
result[y, x] = [a[y, x], a[y, x], a[y, x]]
Et celui-ci fonctionne encore plus lent:
result = np.empty((maxY, maxX, 3), dtype=np.uint16)
for y in range(maxY):
for x in range(maxX):
result[y, x] = [a[y, x], b[y*2, x], b[y*2+1, x]]
Existe-t-il un autre code plus efficace pour atteindre les mêmes résultats?
Forme de a est (299, 299), b - (598, 299), résultat - (299, 299, 3). J'appelle le code environ 5000 fois (et j'attends environ 10 minutes pour cette quantité de données). Si je commente le code fourni, tout fonctionne juste une seconde.
1) réparer votre algorithme, 2) utiliser numpy 3) utiliser CPython sont toutes les options. Sans plus d'informations, il est difficile de dire quoi que ce soit –
Aucune information sur l'une de ces variables ou votre évaluation de cpu-load est donnée ... – sascha
Toujours, * toujours *, ** toujours ** utiliser NumPy lorsque vous effectuez des opérations sur chaque élément de un tableau. – o11c