依赖的包:
from pubsub import pub
from threading import Thread
核心代码:
class ScrapeThread(Thread):
def __init__(self, event):
# 线程实例化时立即启动
# Thread.__init__(self)
super(ScrapeThread, self).__init__()
self.event = event
self.setDaemon(True)
def run(self):
# 线程执行的代码
pub.sendMessage("do_something", msg=self.event)
def do_something(self, msg):
。。。。 。。。。 。。。。
调用部分:
调用之前别忘了 :pub.subscribe(self.do_something, "do_something")
def ready_go(self, event):
# event.GetEventObject().Disable()
ScrapeThread(event).start()
执行ready_go方法就可以了!
其实对于本地窗体级应用开发很多时候都会用到异步,因为从线程不能改动主线程申请的资源,所以必须用到消息泵机制:
在C#中有BeginInvoke机制,在Android开发中有handler,loop机制。和python中的pubsub其实是一个原理。