Je sais que Python a un global lock et j'ai lu l'explication de Glyph de python multithreading. Mais je veux toujours l'essayer. Ce que j'ai décidé de faire en tant que tâche facile (conceptuellement) était de faire une détection de bord horizontal et vertical sur une image.pratique avec des threads en python
Voici ce qui se passe (pseudo-code):
for pixels in picture:
apply sobel operator horizontal
for pixels in picture:
apply sobel operator vertical
Ces deux boucles peuvent s'exécuter complètement indépendamment l'une de l'autre, et seraient donc les meilleurs candidats pour le multithreading. (exécuter ces deux boucles sur n'importe quelle image significativement grande peut prendre 10+ secondes). Cependant, quand j'ai essayé d'utiliser le module threading
en python, cela prend deux fois plus de temps à cause du verrou global. Ma question est de devrais-je abandonner tout espoir de le faire dans deux threads en python et essayer dans une autre langue? Si je peux aller de l'avant, quel (s) module (s) devrais-je utiliser? Si non, dans quelle langue devrais-je expérimenter?
Le module multi-traitement/traitement prend en charge les processus multiples et l'IPC pour vous, et permet une meilleure mise à l'échelle que les threads Python traditionnels pour les tâches gourmandes en ressources CPU. – Jay
Hmm, je ne le savais pas. Merci. –
Je ne suis pas inquiet au sujet du temps autant que de la bonne pratique pour le multithread – helloandre