前提・実現したいこと
下記のソースコードにおいて、func1とfunc2を並列処理させ、func1とfunc2それぞれの戻り値を使ってfunc3,func4を実行したいと考えています。その際、func3,func4についてもできれば並列処理させたいと考えていますが、func3,func4の中でfunc1とfunc2の戻り値をどのように利用すればよいのかがわかりません。アドバイスいただけましたらありがたいです。よろしくお願いいたします。
該当のソースコード
#MCP3208 from concurrent.futures import ThreadPoolExecutor import RPi.GPIO as GPIO #GPIOに関するコードは割愛 def func1(): while True: while (GPIO.input(up_pin) == 1): while (GPIO.input(down_pin) == 1): while (GPIO.input(measurement_pin) == 1): num = 0 while num <=500: num += 1 t_seg = ... time.sleep(0.05) return num, t_seg def func2(): while True: for i in range(5000): count = ... time.sleep(0.001) return count def func3(): x=analog_read(0) #func1の戻り値(num)と*func2の戻り値(count)を使って処理したい #calc_a=x*num*count*... をこの関数の戻り値としたい def func4(): y=analog_read(1) #func1の戻り値(num,t_seg)を使って処理したい #calc_b=y*count*... をこの関数の戻り値としたい if __name__=="__main__": with ThreadPoolExecutor(max_workers=2, thread_name_prefix="thread1") as executor: for _ in range(1000): executor.submit(func1) executor.submit(func2)
試したこと
func3,func4がないソースコードでは、並列処理できていることを確認できています。
(その際、func1およびfunc2の戻り値は"なし"にしています)
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。