怎样让 worker 线程调用主线程的函数?

最近在实践中遇到一个情景:程序中需要启动一个 Thread 监听外部变化,当监听到程序在意的变化时,我想让这个 Thread "通知主线程,让主线程执行某个函数"。

所以问题就来了,目前我没有找到相应的办法来解决这个问题:“在非主线程中通知主线程执行某个函数”。

之前在 StackOverflow 上搜过一些类似的问题,看到有人说用 Queue 来解决:非主线程往 Queue 里面塞东西,主线程来读。但是这种方案存在的问题就是:主线程怎样来读呢,需要一个类似 while True 的循环。这样的话,就把主线程给阻塞住了,这并不是我想要的。

另外,还看过一种方案,感觉思路上可行:就是在主线程中实现一个 Event Loop,可以使用 asyncio 等。(这个方法还没有具体研究)

所以想问问有没有什么方法解决标题所提到的问题。

1 comments