我想在Python中创建一种非阻塞类,但我不确定如何实现。
我希望一个类本身就是一个线程,与主线程分离,这样其他线程就可以与它交互。
以下是一个小例子:
我希望"sample"实例能作为一个独立线程运行(与主线程分离)。在这个例子中,当主线程到达sample.test()时,只有"sample"会睡眠2秒钟。同时,主线程将继续执行并将sample的状态设置为0。2秒钟后,"sample"醒来后会看到状态=0并退出while循环。
问题是如果我这样做,那么就永远无法到达sample.setStatus(0)这一行 (创建了一个无限循环)。我已经为线程命名,结果发现通过这样做,test()被主线程运行。
我想我对Python的线程处理还没有完全理解...
提前感谢您的帮助。
我希望一个类本身就是一个线程,与主线程分离,这样其他线程就可以与它交互。
以下是一个小例子:
#!/usr/bin/python2.4
import threading
import time
class Sample(threading.Thread):
def __init__(self):
super(Sample, self).__init__()
self.status = 1
self.stop = False
def run(self):
while not(self.stop):
pass
def getStatus(self):
return self.status
def setStatus(self, status):
self.status = status
def test(self):
while self.status != 0:
time.sleep(2)
#main
sample = Sample()
sample.start()
sample.test()
sample.setStatus(0)
sample.stop()
我希望"sample"实例能作为一个独立线程运行(与主线程分离)。在这个例子中,当主线程到达sample.test()时,只有"sample"会睡眠2秒钟。同时,主线程将继续执行并将sample的状态设置为0。2秒钟后,"sample"醒来后会看到状态=0并退出while循环。
问题是如果我这样做,那么就永远无法到达sample.setStatus(0)这一行 (创建了一个无限循环)。我已经为线程命名,结果发现通过这样做,test()被主线程运行。
我想我对Python的线程处理还没有完全理解...
提前感谢您的帮助。