1
編輯:我解決了它!不要犯同樣的錯誤和我Python多處理更多無限循環在同一時間
替換此行:
p = multiprocessing.Process(target=check(mval,mname))
有:
p = multiprocessing.Process(target=check, args=(mval,mname))
--------------- -------------------------------------------------- ----------------------
。
。
。
我正在製作一個帶有樹莓派和一些微動開關的機器人,我想檢查微動開關,如果它們被觸發,所以我使用多處理模塊,過程類與幾個無限循環和問題是完全一致的是一個人開始並等待,直到它被觸發,並結束並開始下一個,而不是所有人都獨立開始和運行。這是我的代碼到目前爲止。
import multiprocessing
import time
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)
GPIO.setup(32, GPIO.IN, pull_up_down = GPIO.PUD_UP)
GPIO.setup(7, GPIO.IN, pull_up_down = GPIO.PUD_UP)
GPIO.setup(12, GPIO.IN, pull_up_down = GPIO.PUD_UP)
GPIO.setup(36, GPIO.IN, pull_up_down = GPIO.PUD_UP)
def check(mval, mname):
while True:
time.sleep(0.01)
check = GPIO.input(mval)
if check == False:
print("triggered " + mname)
with open("tmp.txt", "w"):
pass
f = open("tmp.txt", "w")
f.write(mname)
f.close()
break
def startcheck(mval, mname):
p = multiprocessing.Process(target=check(mval,mname))
p.start()
p.join()
startcheck(32, "m1")
startcheck(7, "m2")
startcheck(12, "m3")
startcheck(36, "m4")
感謝您的回答,我刪除了join()行,但問題仍然存在。它仍然一次執行一個,而不是同時執行一個。 –
PI實際上是否支持多個進程?通常我認爲Python中的「Process」代表在多核CPU的另一個核心上執行的線程。我可能是錯的。請參閱multiprocessing.cpu_count()的文檔。該函數返回的值可能提供線索。 –
它返回4,我已經更多地查看支持多個進程的Pi,並且找到了一個運行完好的示例代碼[link](https://www.raspberrypi.org/forums/viewtopic.php?f=32&t=129358)所以問題必須在別處。 –