我正在學習多處理模塊,並從互聯網上找到一些示例代碼。代碼相同但結果不同。請幫助 why my subprogram doesn't work ?當我使用多處理模塊時,爲什麼我的程序不工作
1
A
回答
2
我可以重現你的問題的唯一方法是,如果我設置的過程是惡魔的:
p1 = Process(target=piao, args=('a',))
p2 = Process(target=piao, args=('b',))
p3 = Process(target=piao, args=('c',))
p1.daemon = True
p2.daemon = True
p3.daemon = True
p1.start()
p2.start()
p3.start()
一個daemon
線程將繼續從沒有退出阻塞主程序運行。在我的系統和Python(2.X)daemon
默認爲False
。但根據3.X文檔
如果提供,關鍵字只有守護參數設置進程守護 標誌設置爲True或False。如果無(默認),則此標誌將從創建過程繼承而來 。
這意味着在Windows上的Python Shell中有可能在沒有明確規範的情況下運行進程daemon
。
要改變這種要麼設置該標誌爲false:
p1.daemon = False
p2.daemon = False
p3.daemon = False
具有調用start
之前,但在Python 3.6的情況下,可以在命令中,你調用Process
對象進行進行(見this )。
或者使用join
:
p1.daemon = True
p2.daemon = True
p3.daemon = True
p1.start()
p2.start()
p3.start()
p1.join()
p2.join()
p3.join()
print "done"
+0
哦,這是有道理的;太好了!我有一個upvote的詳細解釋;) – HyperNeutrino
+0
@HyperNeutrino謝謝你! :)在我放棄之後,它超越了我的想法:) – atru
相關問題
- 1. 爲什麼我的點擊事件處理程序不工作?
- 2. 爲什麼我的委託事件處理程序不工作?
- 3. 爲什麼我的點擊處理程序不工作?
- 4. 爲什麼我的程序不工作?
- 5. 當我使用複合模板時,爲什麼我的GMenu不再工作?
- 6. 爲什麼我的CSS不工作(即使當我使用!important)
- 7. 當我設置error404處理程序(app.get('*',......))時頁面不工作
- 8. 爲什麼我的catch塊不工作?
- 9. 爲什麼我的滑塊不工作?
- 10. 當我使用RollingFileAppender時,爲什麼我的SiftingAppender停止工作?
- 11. 爲什麼我的處理程序被多次調用?
- 12. 爲什麼我接下來不能處理我的hadoop程序?
- 13. 當我在哪裏不工作時使用date_add,爲什麼?
- 14. 爲什麼我的應用程序不能關閉時間處理程序?
- 15. 爲什麼我的模式不工作?
- 16. 我的程序不工作,我不知道爲什麼
- 17. 爲什麼當應用程序處於Debug狀態時,Gradle將我的模塊設置爲發佈模式
- 18. 爲什麼我使用<img>'onload'事件處理程序時不時地工作?
- 19. 爲什麼NSURLSession.dataTaskWithURL()不會調用我的完成處理程序?
- 20. 爲什麼我的流錯誤處理程序不被調用?
- 21. 爲什麼我的終止處理程序從不被調用?
- 22. 爲什麼我的信號處理程序不被調用?
- 23. 爲什麼我的程序不能在GCC下進入處理程序模式?
- 24. 爲什麼我的Devise gem的可恢復模塊不工作?
- 25. 爲什麼我的按鍵處理程序在我使用錨點時不起作用
- 26. 當我使用mode ='spinner'時,爲什麼我的RangeEditor不能工作?
- 27. 爲什麼當我在頁面中使用jQuery時,我的html5不工作?
- 28. 爲什麼當我使用外部頁面時我的jquery不工作
- 29. 爲什麼我的遊戲的批處理代碼不工作?
- 30. 爲什麼vshost在我的應用程序不工作時工作?
@atru也許是因爲我不上最新與最新的Python,但執行等待所有線程的查殺過程對我來說前完成。它在開始消息的中間的某個地方打印結束消息,但它等待所有完成消息 – HyperNeutrino
@HyperNeutrino確實,它不是'join()'。我刪除了我的評論。該程序適用於我 - 儘管在開始時打印了結束消息。 – atru
@atru它是'join()'...它只是等待線程完成並殺死它,這使得結束消息打印在末尾 – HyperNeutrino