multithreading - 在 Python 中从线程向主发出 g_signal
问题描述
所以我找到了关于如何创建“线程池”系统的要点,我的问题是:当执行的函数在线程中完成时,必须从(或向)主线程发出“完成”信号。要点上提出的解决方案是覆盖GObject.emit
函数 using GObject.idle_add(GObject.GObject.emit, self, *args)
which 在要点示例中可以解决问题,但奇怪的是对我不起作用。我创建了他的代码的一个稍微修改过的版本,它可以满足我的需要,除了正确/完全发出信号。
class _IdleObject(GObject.GObject):
""" Override GObject.GObject to always emit signals in the main thread by
emmitting on an idle handler """
@trace
def __init__(self):
GObject.GObject.__init__(self)
@trace
def emit(self, *args):
GLib.idle_add(GObject.GObject.emit, self, *args)
总之,信号要么不发出,要么在辅助线程上发出(当发出函数覆盖被注释掉时),它不能更新 UI,因此不能解决我的问题。关于发生了什么的任何想法?
我的他的要点可以在这里找到
解决方案
推荐阅读
- jquery - 为什么 $.ajax 在向服务器发送请求时执行“数据:{}”中的函数属性
- c++ - 覆盖纯虚函数,使得派生类不是抽象的
- html - 将嵌入的 SVG 缩放到父 div
- angular - Angular 7 - 虚拟滚动条在滚动时重置多选中的选定项目
- visual-c++ - 函数调用 Visual c++ 中未找到标识符错误
- bash - 为什么以下两个示例给出不同的排序顺序?
- php - 如何向 WooCommerce 产品添加(第二个)自定义 sku 字段?
- javascript - HTML: JQuery 如何使用 JQuery 获取 data-dk-dropdown-value
- django - 无法连接到服务器 postgres django
- c - 父母不会通过 sigqueue 调用接收信号 - C