我目前有一个触发此按钮的按钮:
def spam(self,event):
t = workingthread()
t.start()
其中包含:
class workingthread(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
def run(self):
while 1:
chat = skype.CreateChatWith(name)
chat.SendMessage(message)
time.sleep(timeou)
我正试图让它被切换,但我听说没有办法阻止线程,我真的不想使用多处理。还有其他方法可以让这个工作没有落后于wx gui吗?
答案 0 :(得分:3)
而不是“while 1”,为什么不替换一些开始为“true”的变量,并且可以更改为“false”(表示线程退出)。
当然,这假设您不断循环(并且不会以“chat。*”方式阻止,或者等待“sleep()”)。
答案 1 :(得分:2)
你可以尝试这样的事情,我自己做了。
from Queue import Queue
import threading
class workingthread(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
self._queue = Queue()
def run(self):
while True:
item = self._queue.get(block=True)
if item is None:
return
name, message = item
chat = skype.CreateChatWith(name)
chat.SendMessage(message)
def processOne(self, data):
self._queue.put_nowait(data)
def stop(self):
self._queue.put(None)
这显然是一个粗略的例子,但是你创建了一个在线程中阻塞的队列。您可以随时启动该线程并运行它。等你触发它或停止它。