Ausgehend vom Trend habe ich eine thread-sichere Funktion erstellt, die Sortierergebnisse zurückgibt. Möchten Sie etwas wie Multiprocessing oder Joblib machen?
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))
Ausführungsergebnis (die Ausführung dieses Skripts dauert 7 Sekunden)
[1, 3, 3, 3, 4, 5, 6, 6, 7]
Referenz: 2012/03/16 Schreiben wir die Schlafsortierung generisch in Ruby. 2013/05/15 Erklärung der Schlafart 24.10.2013 Training sleepsort 09.06.2015 Rost- und Schlafsortierung 25.06.2015 Schlafsortierung in C # geschrieben 21.10.2015 Ich habe versucht, die Schlafsortierung in der Parallelverarbeitung von C ++ zu implementieren 15.11.2016 Multithread-Vergleich mit Sleep Sort (js / TS / VB / C # / C ++ / D / Go / HSP (Nebel)) 2017/04/24 [[Neta] Schlafsortierung mit Swift]([Neta] Schlafsortierung mit Swift) 2017/04/24 [Neta] Sleep Sort mit JavaScript 26.04.2017 [Neta] Sleep Sort in Java 2017/04/26 [Neta] Sleep Sort in Python 2017/04/26 sleep sort
Recommended Posts