【问题标题】:Continuing a Loop and Moving On (Python)继续循环并继续前进(Python)
【发布时间】:2011-09-19 22:24:17
【问题描述】:

我的 Python 应用程序 (v2.7) 中有一个“while”循环,它基本上与蓝牙 GPS 设备通信,只要有数据被接收,循环就会继续。本质上,while 循环是这样的:-

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

现在我想做的是让这个 while 循环在程序的整个生命周期中持续运行,直到蓝牙设备关闭,这反过来又会结束循环,因为不会接收到数据。尽管如此,随着这个 while 循环的继续,我想转到另一个解析数据的方法。

如何让循环继续运行并继续执行下一个命令?需要穿线吗?我是线程概念的新手,所以请耐心等待:)

谢谢

【问题讨论】:

  • 根据从设备读取的延迟要求,您可能可以将生成器用作coroutine,而不是线程/多处理。

标签: python loops while-loop python-multithreading


【解决方案1】:

是的,因为您实际上要同时做两件事,所以您必须创建一个新线程(使用 threading)或更简单的一个新进程(使用 multiprocessing 或只是os.fork)

最简单的方法就是把这部分放在一个函数中,并使用multiprocessingthreading在不同的进程中启动该函数。通常,与多线程相比,多进程的怪异程度要低,仅供参考。

【讨论】:

    【解决方案2】:
    received = ""
    while True:
         data = socket.recv(1024)
         if not data:
             break # ends the while loop
         received+=data
    
    do_stuff(received)
    

    【讨论】:

      猜你喜欢
      • 2011-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多