2011-09-19 143 views
1

我有一個「而」循環在我的Python應用程序(V2.7),它基本上與藍牙GPS設備進行通信,並循環繼續,只要有接收數據。從本質上說,while循環是這樣的: -繼續一個循環,並繼續前進(Python)的

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

現在我想要做的就是讓整個節目的生命持續運行這個while循環,直到藍牙設備關閉這反過來將結束因爲沒有數據將被接收。儘管如此,隨着這個while循環繼續,我然後想要轉移到另一個將解析數據的方法。

我怎麼能離開的循環運行,並移動到下一個命令?是否需要線程?我是新來的線程的概念,所以請耐心等待我:)

感謝

+1

根據從設備讀取的延遲要求,您可以使用生成器作爲[協程](http://antroy.blogspot.com/2007/04/python-coroutines.html )而不是線程/多處理。 – agf

回答

0

是啊,因爲你基本上會在同一時間做兩件事情,你必須創建一個新的線程(使用threading)或者更簡單的新工藝(使用multiprocessing或只是os.fork

最簡單的事情就是把這個部分的功能,並使用multiprocessingthreading啓動功能一個不同的過程。通常情況下,對於多個進程而言,您將不會有多餘的怪異現象,只是FYI。

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

do_stuff(received)