Ich bin neu bei Python und ich lerne Threading und GIL. Dies sind die Statistiken von lscpu
Befehl:Python Threading Performance vs Anzahl der Kerne
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
Thread(s) per core: 2
Core(s) per socket: 2
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 69
Stepping: 1
CPU MHz: 1700.062
BogoMIPS: 4789.05
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 3072K
NUMA node0 CPU(s): 0-3
Als ich diesen einfachen Python lief Beispiel Einfädeln, erhalte ich die folgende Ausgabe.
import time
import threading
def counter(n):
for i in range(0,n):
i = i+1
return
t1 = threading.Thread(target=counter, args = (10000000,))
t2 = threading.Thread(target=counter, args = (10000000,))
t0 = time.clock()
t1.start()
t2.start()
t1.join()
t2.join()
t3 = time.clock()
print "Total time : %s"%str(t3-t0)
[email protected]:~/Desktop$ python threads.py
Total time : 2.115326
Aber wenn ich deaktivieren 3 Kerne und Wieder führen Sie den Code:
[email protected]:~/Desktop$ python threads.py
Total time : 1.115442
Diese Zahlen bleiben mehr oder weniger das gleiche. Warum ist das so?? Jemand erklären. Vielen Dank im Voraus ...
Und denken Sie daran Dinge wie dynamische Frequenzskalierung (TurboBoost etc.) – renemilk
'Multiprocessing' verwendet keine Threads, es ist ein Paket, das Laichprozesse unterstützt [sic], die nicht ganz gleich ist. –
Danke für die Antwort, aber ich würde gerne wissen, warum es langsamer wird, wenn die Anzahl der aktiven Kerne mehr ist –