我一直在試驗我的代碼以發送「並行」命令到多個串行COM端口。Python多重處理比Windows上的多線程稍微慢
我的多線程代碼包括:
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()
和多處理代碼包括:
devices = [0, 1, 2, 3]
cpus=cpu_count() #detect number of cores
pool = Pool(cpus)
results = pool.map(multi_run_wrapper, devices)
我觀察到在「並行發送串行命令至4個COM端口的任務「大約需要6秒鐘,多次處理總是需要0.5到1秒的額外總運行時間。
關於爲什麼Windows機器上的差異的任何輸入?
多處理總是有額外的開銷與多線程。多線程使用與父進程相同的內存空間,而多進程需要爲進程分配新的內存。遊戲中可能有更多的因素,但這種開銷是給定的。 –