2017-11-29 8 views
0

ここは私の問題です。 私は3つの異なるデバイスからデータを取得するシステムに取り組んでいます(毎回、 "read_data"ループを実行するプロセスを起動したいと思います)。Python 2で並列プロセスのデータを同時に読み込み、共有して処理する方法は?

リアルタイムで記録された3つのデータから、これらのデータに関するアクションを実行するループを追加したいと思います。

(明らかに本当に悪いセマンティックと、それはアイデアを理解するためです)例:

Class Sensor1: 
read_s1(): 
data_s1 = ... 
Class Sensor2: 
read_s2(): 
data_s2 = ... 
Class Sensor3: 
read_s3(): 
data_s3 = ... 

main: 
read_s1.start() 
read_s2.start() 
read_s3.start() 

while True: #processing and acting regarding realtime data from the three sensors 
    if read_s1.data_s1/read_s2.data_s2 + read_s3.data_s3 == 2: 
       #do something 

私はスレッドとマルチプロセスを使用しようとしましたが、私は読んで3つのスレッドを起動し、保存するために管理することができませんでした変数に入ってくるデータを受け取り、外部ループからこれらのデータにアクセスしたいときにアクセスします。

私は正確に持っている::

+1

これらのスレッドとの同期が必要です。すべてが反復されると、メインスレッドとメインスレッドがデータを処理するようにカウントします。詳細はhttps://docs.python.org/3/library/asyncio-sync.htmlをご覧ください。 – brokenfoot

答えて

0

私はより具体的になろうとするつもりだ

thread_1: 
    while not e.isSet(): 
     data1 = read_data1() 
thread_2: 
    while not e.isSet(): 
     data2 = read_data2() 
thread_3: 
    while not e.isSet(): 
     data3 = read_data3() 

if __name__ == 'main': 
     thread_1.start() 
     thread_2.start() 
     thread_3.start() 
     while not e.isSet(): 
      if data1 = 2 and data2 = 3 and data3=4: 
        #do something 

はどのようにロックを使用すると仮定していますか? 各スレッドは、データの読み込みが各センサーごとに異なるため、繰り返しごとに実行時間が異なります。 ありがとうございます!

関連する問題