[問題] 平行處理問題

作者: chhuang17 (chhuang17)   2021-08-31 16:05:13
不知道板上有沒有人利用過VISSIM車流模擬軟體
並利用COM進行二次開發的經驗
如果有的話希望能站內信,想好好跟前輩們請教QQ
小弟希望能一口氣控制10個號誌化路口
原先做法想說個別路口的控制分別寫成一個函式,
用multi-processing同時運行10個函式
不過實作後發現不可行
上網查了一下才發現multi-processing無法處理有次序性的問題,
因為利用VISSIM COM控制燈號變換時,必須設定好break的時間點,暫停當前模擬狀態,
然後才能切換我要的燈號,
而這些break的時間點必須由小至大依序排列,否則與VISSIM內部軟體的時間對不上
(比方說我想break在200秒的時候,但VISSIM的模擬秒數已經跑400秒了,
此時我在外部寫的break at 200s 那行程式將會報錯)
也許用過VISSIM的板友不多,不過最主要是想問
python有沒有辦法處理這種有次序性平行處理的方法呢?
(我知道我講得很亂,詳細的說明,有需要會再附上程式碼說明)
作者: tsoahans (ㄎㄎ)   2021-08-31 17:09:00
coroutine?
作者: lycantrope (阿寬)   2021-08-31 17:41:00
想要有次序可以給queue FIFO
作者: TitanEric (泰坦)   2021-08-31 20:38:00
留一個dict mapping號誌ID跟對應的function?ai計算該改變哪個號誌出來再執行
作者: lycantrope (阿寬)   2021-09-01 00:27:00
可以用lock,在AI更新時制計畫時把平行處理鎖起來啊

Links booklink

Contact Us: admin [ a t ] ucptt.com