擅长:python、mysql、java
<p>您看到的错误是对函数调用join的结果。您需要对<code>thread</code>对象调用<code>join</code>。您没有捕获对线程的引用,因此您无论如何也无法调用<code>join</code>。你应该这样。在</p>
<pre><code>th1 = thread.start_new_thread( monitorData,())
# later
th1.join()
</code></pre>
<p>对于解决方案,可以使用<code>Queue</code>在线程之间进行通信。队列用于向worker线程发送一个quit消息,如果worker在一秒钟内没有从队列中获取任何信息,它将运行从arduino收集数据的代码。在</p>
^{pr2}$
<p>它可能比您希望的代码多了一点,并且必须检测到队列是空的(有一个异常)有点难看,但是这不依赖于任何全局变量,并且总是会立即退出。基于<code>sleep</code>的解决方案则不是这样,它需要等待任何当前对<code>sleep</code>的调用完成,然后才能继续执行。在</p>
<p>正如其他人所指出的,您应该真正使用<code>threading</code>,而不是旧的<code>thread</code>模块,而且我建议您使用python3而不是python2来学习。在</p>