私はpython2.7でマルチプロセッシングをしようとしている電気技師です。2 つの異なる信号で同じテストを実行する必要がある 2 つのオシロスコープがあります。
現在、順番に実行し、長い時間がかかるコードがあります。
両方のスコープで同時に測定を行い、結果をログ機能に適切に入れたいと思っています。
私はこれまでに役立つマルチプロセッシングまたはコンカレント.フューチャーに手を出そうとしています。
ここが助けが必要なポイントです。
私のテストはpython関数です
def test1(scope_num):
recall_setup() #talk to scope over network
a = read_measurments()
return a
def test2(scope_num):
recall_setup() #talk to scope over network
a = read_measurments()
return a
以下は私のメインループです
scope1=scipycmd(ip_addr_1)
scope2=scipycmd(ip_addr_2)
def control_prog():
result=emptyclass()
for temperature in [0,25,100]:
for voltage in [600,700,800]:
init_temp_volt(temperature, voltage)
for scope in [scope1,scope2]:
result.test1 = test1(scope)
result.test2 = test2(scope)
logfile.write_results(results)
control_prog()
Q1. scope1 と scope2 を同時に並列処理するにはどうすればよいですか?
Q2. ロギングの処理方法
誰かが私を導くことができれば非常に役に立ちます
編集:OK..マルチプロセスとマルチスレッドの両方のアプローチを試しましたが、マルチプロセスのアプローチが最速です(明らかに)。しかし、今でもロギングは依然として問題です。
私が試したこと
scope=([scope0],[scope1])
def worker():
test1()
test2()
def mp_handler(var1):
for indata in var1:
p = multiprocessing.Process(target=worker, args=(indata[0]))
p.start()
美しく実行されますが、ロギングが機能しません。