파이썬 multiprocessing 병렬처리 어떻게 해결해야 될까요.
요즘에 학교에서 개인적으로 해보고 싶은게 있어서, 라즈베리파이를 공부 중입니다.
우선 구현하고자 하는 것은 센서를 통해 값은 인식하는데, 이때 각 프로세스에 따라 값을 인식하는 시간을 다르게 하고 싶습니다.
예를 들어
센서 1 _ 1초에 한번씩 값을 저장
센서 2 _ 2초에 한번씩 값을 저장
...
그래서 multiprocessing을 통해서 병렬처리를 해볼려고했는데 마음데로 안되네요. join()을 쓰니 결국엔 가작 오래 걸리는 프로세스를 기준으로 끝나버립니다. 그러면 1초에 한번씩 값을 읽는 센서는 그동안 아무것도 안하고 있습니다. 어떻게 해야하나요...
아래 부분이 현재 센서로 Data를 수집하는 부분입니다.
def sensorData(pin, sensor_name, timeToSleep) :
f = open(sensor_name + '.txt','a')
#시간 정보를 가져온다.
tmp = now_time()
if GPIO.input(pin):
val = GPIO.input(pin)
print(tmp + ' ' + sensor_name + " : " + str(val) + '\n')
else :
print(sensor_name + " : not recognition\n")
time.sleep(timeToSleep)
f.close()
그리고 왜 join()을 없에면 time.sleep()이 돌아가지 않나요? 대충 짐작은 가는데 설명해 주실 수 있나요...
댓글 달기