【发布时间】:2010-10-14 15:53:54
【问题描述】:
我正在尝试在 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(并且只有“sample ") 将进入睡眠状态 2 秒。与此同时,主线程将继续执行并将样本的状态设置为 0。当 2 秒后“样本”唤醒时,它会看到状态=0 并退出 while 循环。
问题是,如果我这样做,则永远不会到达 sample.setStatus(0) 行(创建一个无限循环)。我已经命名了线程,结果证明通过这样做,test() 由主线程运行。
我想我在 python 中的线程没有那么好......
提前谢谢你
【问题讨论】:
标签: python multithreading nonblocking