我正在學習多處理模塊,並從互聯網上找到一些示例代碼。代碼相同但結果不同。請幫助 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. 爲什麼我的CSS不工作(即使當我使用!important)
- 4. 當我設置error404處理程序(app.get('*',......))時頁面不工作
- 5. 爲什麼我的catch塊不工作?
- 6. 爲什麼我的處理程序被多次調用?
- 7. 當我在哪裏不工作時使用date_add,爲什麼?
- 8. 爲什麼我接下來不能處理我的hadoop程序?
- 9. 我的程序不工作,我不知道爲什麼
- 10. 爲什麼當應用程序處於Debug狀態時,Gradle將我的模塊設置爲發佈模式
- 11. 爲什麼我的流錯誤處理程序不被調用?
- 12. 爲什麼我的信號處理程序不被調用?
- 13. 爲什麼我的程序不能在GCC下進入處理程序模式?
- 14. 爲什麼當我在頁面中使用jQuery時,我的html5不工作?
- 15. 爲什麼vshost在我的應用程序不工作時工作?
- 16. 爲什麼我的程序不工作,當我把一個偶數的元素
- 17. 我的亞軍使用處理程序不工作在android
- 18. 爲什麼當我開始程序不工作,但在NetBeans的工作?
- 19. 爲什麼我不使用NSLock工作?
- 20. 爲什麼我的表單不能使用我的模塊?
- 21. 爲什麼多處理不起作用?
- 22. 爲什麼我不能調用wakeLock.release();從處理程序?
- 23. 爲什麼我的Python程序找不到jq模塊?
- 24. 爲什麼我的HTML5應用程序緩存不工作?
- 25. 爲什麼我的應用程序不能在IE中工作?
- 26. 爲什麼我的Processing應用程序不能正常工作?
- 27. 爲什麼這個UnhandledException事件處理程序不工作?
- 28. 我的程序不起作用,我不知道爲什麼?
- 29. 當我在自己的OnClick處理程序中銷燬按鈕時,爲什麼我的程序崩潰?
- 30. 爲什麼我的global.asax錯誤處理程序無法正常工作?
@atru也許是因爲我不上最新與最新的Python,但執行等待所有線程的查殺過程對我來說前完成。它在開始消息的中間的某個地方打印結束消息,但它等待所有完成消息 – HyperNeutrino
@HyperNeutrino確實,它不是'join()'。我刪除了我的評論。該程序適用於我 - 儘管在開始時打印了結束消息。 – atru
@atru它是'join()'...它只是等待線程完成並殺死它,這使得結束消息打印在末尾 – HyperNeutrino