看板 Python 關於我們 聯絡資訊
不知道板上有沒有人利用過VISSIM車流模擬軟體 並利用COM進行二次開發的經驗 如果有的話希望能站內信,想好好跟前輩們請教QQ 小弟希望能一口氣控制10個號誌化路口 原先做法想說個別路口的控制分別寫成一個函式, 用multi-processing同時運行10個函式 不過實作後發現不可行 上網查了一下才發現multi-processing無法處理有次序性的問題, 因為利用VISSIM COM控制燈號變換時,必須設定好break的時間點,暫停當前模擬狀態, 然後才能切換我要的燈號, 而這些break的時間點必須由小至大依序排列,否則與VISSIM內部軟體的時間對不上 (比方說我想break在200秒的時候,但VISSIM的模擬秒數已經跑400秒了, 此時我在外部寫的break at 200s 那行程式將會報錯) 也許用過VISSIM的板友不多,不過最主要是想問 python有沒有辦法處理這種有次序性平行處理的方法呢? (我知道我講得很亂,詳細的說明,有需要會再附上程式碼說明) -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.137.97.127 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1630397115.A.399.html
tsoahans: coroutine?08/31 17:09
lycantrope: 想要有次序可以給queue FIFO08/31 17:41
感謝上面兩位給的建議,不過剛剛翻書稍微看了一下 次序似乎要在已知下一工作階段為何的情況下才可行? 因為我預計讓AI在每一時階更新時制計畫, 也就是說每一次更新後break的時間點都不同 也無從得知該切換哪個路口的號誌燈頭, 不知道break後該運作哪一個函式, 這部分不知道有沒有解? ※ 編輯: chhuang17 (223.137.97.127 臺灣), 08/31/2021 18:09:31
TitanEric: 留一個dict mapping號誌ID跟對應的function?ai計算該08/31 20:38
TitanEric: 改變哪個號誌出來再執行08/31 20:38
lycantrope: 可以用lock,在AI更新時制計畫時把平行處理鎖起來啊09/01 00:27
感謝以上回覆 雖然我最後還是沒有用到各位的想法 不過也是硬幹把它寫出來了XD ※ 編輯: chhuang17 (223.137.204.214 臺灣), 09/05/2021 19:57:17