Surfant sur la tendance, j'ai créé une fonction thread-safe qui renvoie des résultats de tri. Souhaitez-vous créer quelque chose comme le multitraitement ou le joblib?
from threading import Thread, Lock
from time import sleep
def sleep_sort(values):
sorted_values = []
lock = Lock()
def worker(value):
sleep(value)
with lock: sorted_values.append(value)
threads = [Thread(target=worker, args=(value,)) for value in values]
for thread in threads: thread.start()
for thread in threads: thread.join()
return sorted_values
array = [5, 3, 6, 3, 6, 3, 1, 4, 7]
print(sleep_sort(array))
Résultat de l'exécution (ce script prend 7 secondes pour s'exécuter)
[1, 3, 3, 3, 4, 5, 6, 6, 7]
référence: 2012/03/16 Écrivons le tri de sommeil de manière générique dans Ruby. 2013/05/15 Explication du tri du sommeil 2013/10/24 Training sleepsort 2015/06/09 Tri rouille et sommeil 2015/06/25 Sleep sort écrit en C # 21/10/2015 J'ai essayé d'implémenter le tri du sommeil dans le traitement parallèle de C ++ 15/11/2016 Comparaison multi-thread avec Sleep Sort (js / TS / VB / C # / C ++ / D / Go / HSP (mist)) 2017/04/24 [[Neta] Sleep Sort avec Swift]([Neta] Sleep Sort avec Swift) 2017/04/24 [Neta] Sleep Sort with JavaScript 2017/04/26 [Neta] Sleep Sort in Java 2017/04/26 [Neta] Sleep Sort in Python 2017/04/26 sleep sort
Recommended Posts