- https://docs.python.org/3/library/threading.html
- https://docs.python.org/3/library/multiprocessing.html
- Python: what are the differences between the threading and multiprocessing modules?
在Linux上使用Python 3.4在Python 3中是否使用模塊線程和多處理相互排斥?
我新的並行編程和運行threading.Threads當我遇到問題()爲一個特定的方法,併爲另一個模塊multiprocessing.Process()。當另一個被註釋掉時,這兩種方法都可以正常工作。這兩種方法都沒有任何關係(例如,不嘗試共享數據)。但是,當我把它們都運行的時候都不行,一切都凍結了。據我所知,多處理似乎鎖定了。我認爲同樣的事情適用於線程。
所以第一步是斷言這是否甚至可能?
(我有一種感覺有些人會問這樣做的原因...的線程執行一個簡單的捕捉用戶密鑰檢查,同時多完成一些繁重)
我提供一個例子(更像是僞代碼)來幫助說明如何使用這些方法。
文件t.py
import threading
Class T:
Def __init__():
t = threading.Thread(target = self.ThreadMethod)
t.daemon = True
t.start()
Def ThreadMehod():
# capture key
文件m.py
import multiproceessing
Class M:
Def __init__():
mp = multiprocessing.Process(target = self.ProcessMethod)
mp.start()
Def ProcessMethod():
# heavy lifting
文件main.py
import T
import M
Class main:
Def __init__():
T()
Def DoTheProcess()
for i in range(5):
M()
簡短的回答是,我不認爲這應該發生,我已經在同一個應用程序之前沒有問題,雖然有一個不同的安排,但你檢查,以確保你沒有得到變量名稱的重疊?你如何導入?你是從x導入*還是隻導入x? –
我剛剛嘗試使用池而不是過程,現在看來,這兩個工作...就像我說的,我是新來的mp,所以我可能實施過程錯誤。我會接受你的答案,如果我可以... – user1267259
你能提供[一個最小但完整的代碼示例](http://stackoverflow.com/help/mcve)?這可能有助於診斷問題。提及什麼是您的操作系統,以及如何運行腳本:您希望發生什麼?而發生什麼呢? – jfs