[問題] 平行處理問題

看板Python作者時間3年前 (2021/08/31 16:05), 3年前編輯推噓4(401)
留言5則, 3人參與, 3年前最新討論串1/1
不知道板上有沒有人利用過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

08/31 17:09, 3年前 , 1F
coroutine?
08/31 17:09, 1F

08/31 17:41, 3年前 , 2F
想要有次序可以給queue FIFO
08/31 17:41, 2F
感謝上面兩位給的建議,不過剛剛翻書稍微看了一下 次序似乎要在已知下一工作階段為何的情況下才可行? 因為我預計讓AI在每一時階更新時制計畫, 也就是說每一次更新後break的時間點都不同 也無從得知該切換哪個路口的號誌燈頭, 不知道break後該運作哪一個函式, 這部分不知道有沒有解? ※ 編輯: chhuang17 (223.137.97.127 臺灣), 08/31/2021 18:09:31

08/31 20:38, 3年前 , 3F
留一個dict mapping號誌ID跟對應的function?ai計算該
08/31 20:38, 3F

08/31 20:38, 3年前 , 4F
改變哪個號誌出來再執行
08/31 20:38, 4F

09/01 00:27, 3年前 , 5F
可以用lock,在AI更新時制計畫時把平行處理鎖起來啊
09/01 00:27, 5F
文章代碼(AID): #1XBUAxEP (Python)
文章代碼(AID): #1XBUAxEP (Python)