J'essaie de comprendre le GIL de Python. J'ai récemment eu une mission où je devais comparer les temps d'exécution d'une certaine tâche effectuée en utilisant différents algorithmes de complexité temporelle différente sur plusieurs fichiers d'entrée. J'ai exécuté un script python pour faire de même, mais j'ai utilisé des fenêtres de terminal séparées sur macOS pour exécuter le même script python pour différents fichiers d'entrée. J'ai également couru le tout dans une fenêtre de terminal, l'un après l'autre, pour chaque fichier d'entrée. Le temps CPU pour cela était inférieur pour chaque exécution par rapport à l'approche précédente avec plusieurs fenêtres où chaque programme prenait deux fois plus de temps mais courait tous en même temps. (Note: il y avait 4 fenêtres de terminal dans l'approche précédente et le script python ne faisait qu'exécuter un exécutable a.out compilé avec clang sur macOS et stocké la sortie dans des fichiers différents).GIL affecte-t-il le traitement parallèle d'un script python dans des fenêtres de terminal distinctes?
Quelqu'un peut-il expliquer pourquoi l'exécution en parallèle conduit à un ralentissement de chaque programme? Ont-ils fonctionné sur des cœurs séparés ou est-ce que le GIL a conduit à ce que chaque programme soit plus lent que si je le faisais un à la fois dans une fenêtre de terminal?
Le programme accède-t-il au disque ou à quelque chose d'autre? – Scovetta
Le programme prend une entrée de nombres de stdin et imprime 3 chaînes sur stdout que je redirige vers les fichiers en utilisant le < and > suivi de différents noms de fichiers pour chaque programme. Je ne pense pas qu'ils partagent quelque chose puisque le a.out est juste un programme de tri avec 1 fonction autre que la main. –