2011-09-19 152 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)