擅长:python、mysql、java
<p>是的,你需要使用线程。在任何基于GUI的程序中,任何需要花费大量时间的工作都应该在单独的线程上进行,以避免在看到“无响应”程序时阻塞UI,这几乎总是由于程序无法处理窗口消息,因为它的UI线程在一些长时间操作中被阻塞。在</p>
<p>启动后台线程的一个简单方法是使用<a href="http://docs.python.org/2/library/threading.html" rel="nofollow">^{<cd1>} module</a>。下面是如何使用它每秒向串行端口写入一次数据:</p>
<pre><code>class MyClass:
# This method will run on a separate thread
def _serial_port_worker(self):
while self._run_worker:
self.send_data_to_serial_port()
time.sleep(1)
# Call this to start the worker thread
def start_worker_thread(self):
self._run_worker = True
worker_thread = threading.Thread(target=self._serial_port_worker,
args=(self,))
worker_thread.start()
# Call this to tell the worker thread to stop
def stop_worker_thread(self):
self._run_worker = False
</code></pre>