2011-09-19 2 views
1

기본적으로 블루투스 GPS 장치와 통신하는 내 파이썬 앱 (v2.7)에는 'while'루프가 있으며 루프는 데이터가 수신되는 동안 계속됩니다. 본질적으로, while 루프는 다음과 같다 : -루프 계속하기 및 계속하기 (Python)

> data = "" 
> 
> if data == None: 
>  print "Connection Failed" else: 
>  print "Connection Established" 
> 
> while True: 
>  data = socket.recv(1024) 

지금 내가 뭘 원하는 블루투스 장치가 차례로을 종료 할 꺼질 때까지 프로그램의 수명이 다할 때까지 지속적으로 실행이 while 루프를두고있다 데이터가 수신되지 않으므로 루프를 반복하십시오. 그럼에도 불구하고이 루프가 계속되면서 데이터를 파싱 할 다른 메서드로 이동하려고합니다.

루프를 실행 한 상태로두고 다음 명령으로 이동하려면 어떻게해야합니까? 스레딩이 필요합니까? 난 당신이 본질적으로 같은 시간에 두 가지 일을 할거야 때문에, 당신이해야합니다,

감사

+1

기기에서 읽는 대기 시간 요구 사항에 따라 발전기를 [coroutine] (http://antroy.blogspot.com/2007/04/python-coroutines.html)로 사용할 수 있습니다.) 스레딩/다중 처리 대신. – agf

답변

0

예를 스레딩의 개념에 새로 온 사람 때문에 나를 :)으로 기다려주십시오 새 스레드 (threading 사용) 또는 함수에서이 부분을 넣어 할

가장 쉬운 일이 (multiprocessing하거나 os.fork 사용) 아마도 더 단순히 새로운 프로세스를 생성하고, multiprocessing 또는 threading가에서 함수를 시작하는 데 사용할 다른 과정. 일반적으로 FYI는 다중 스레드보다 여러 프로세스에 대한 기이함이 적습니다.

-1
received = "" 
while True: 
    data = socket.recv(1024) 
    if not data: 
     break # ends the while loop 
    received+=data 

do_stuff(received) 
관련 문제