0
我試圖在Python中使用多處理功能,讓一個函數在循環中繼續調用,隨後從函數中訪問最新的返回值(通過將值存儲在LIFO隊列中) 。使用(LIFO)隊列的Python多重處理
這裏是主程序
q = Queue.LifoQueue()
while True:
p = multiprocessing.Process(target=myFunc, args = (q))
p.daemon = True
p.start()
if not q.empty():
#do something with q.get()
的代碼片段下面是從myFunc的
def myFunc(q):
x = calc()
q.put(x)
的問題是一個代碼段,主循環認爲q是空的。但是,我已經檢查myFunc()是否將值放入q中(通過在q.put(x)之後放置q.empty()檢查),並且隊列不應該爲空。
我該怎麼做,以便主循環可以看到隊列中的值?或者我以低效的方式解決這個問題? (我確實需要myFunc和主循環,因爲myFunc有點慢,主循環需要繼續執行它的任務)
謝謝!我將試用SyncManager.list()並查看它是否有效。你認爲我想要做什麼,多處理是最好的方法嗎? – user3543300