2017-11-29 12 views
0

내 문제는 여기에 있습니다. 세 가지 다른 장치에서 데이터를 가져 오는 시스템에서 작업하고 있습니다 (매번 "read_data"루프를 실행하는 프로세스를 시작하려고합니다).Python 2에서 병렬 프로세스의 데이터를 읽고 공유하고 처리하는 방법은 무엇입니까?

실시간으로 기록 된 세 가지 데이터에서이 데이터에 관한 작업을 수행하는 루프를 추가하고 싶습니다. (명백하게 정말 나쁜 의미로,하지만 그 아이디어를 이해하기위한거야)

예 : 내가 스레딩과 멀티 프로세스를 사용하려고

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 

,하지만 내가 읽은 세 개의 스레드를 실행, 관리 및 저장할 수 없습니다 변수에서 들어오는 데이터를 읽은 다음 외부 루프에서이 데이터로 이동할 때 액세스합니다.

나는 정확하게이 :

+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 

는 어떻게 잠금을 사용하는 가정입니까? 각 스레드는 데이터 읽기가 각 센서마다 다른 시간을 가지므로 반복마다 다른 실행 시간을 갖습니다. 대단히 감사합니다!