Ich habe meinen Code experimentiert, um "parallele" Befehle an mehrere serielle COM-Ports zu senden.Python Multiprocessing etwas langsamer als Multithreading unter Windows
My Multi-Threading-Code besteht aus:
global q
q = Queue()
devices = [0, 1, 2, 3]
for i in devices:
q.put(i)
cpus=cpu_count() #detect number of cores
logging.debug("Creating %d threads" % cpus)
for i in range(cpus):
t = Thread(name= 'DeviceThread_'+str(i), target=testFunc1)
t.daemon = True
t.start()
und Multi-Processing-Code besteht aus:
devices = [0, 1, 2, 3]
cpus=cpu_count() #detect number of cores
pool = Pool(cpus)
results = pool.map(multi_run_wrapper, devices)
I zu beobachten, dass die Aufgabe in „Parallel-Serien-Befehle 4 COM-Ports des Sendens "dauert etwa 6 Sekunden und Multi-Processing dauert immer 0,5 bis 1 Sekunde zusätzliche Gesamtlaufzeit.
Irgendwelche Eingaben, warum die Diskrepanz auf einer Windows-Maschine?
Multi-Processing hat immer zusätzlichen Overhead vs. Multi Threading. Multi-Threading verwendet den gleichen Speicherplatz wie der übergeordnete Prozess, während Multi-Processing neuen Speicher für den Prozess zuweisen muss. Es spielen wahrscheinlich mehr Faktoren eine Rolle, aber dieser Overhead ist selbstverständlich. –