代码之家  ›  专栏  ›  技术社区  ›  Ryan C. Thompson

为什么python gstreamer没有gobject.threads\u初始化()“在我剧本的顶端?

  •  10
  • Ryan C. Thompson  · 技术社区  · 15 年前

    我已经编写了一个python脚本来使用gstreamer(pygst和gst模块)来计算replaygain标记,并且由于各种gobject错误而崩溃。我找到了一个地方,你可以通过在你的脚本顶部放置以下样板文件来解决这个问题:

    import gobject
    gobject.threads_init()
    

    我试过了,成功了。有谁能解释为什么这些行是必要的,为什么pygst自己不这么做?

    1 回复  |  直到 15 年前
        1
  •  14
  •   Community Mohan Dere    9 年前

    因为,您可以在非线程环境中使用gobject。这并不罕见。 在线程环境中使用gobject时,需要通过调用gobject.threads\u初始化(). 这也将确保当调用“C”函数时,GIL被释放。

    同样来自功能文档:

    初始化Python的使用 gobject模块中的线程。这个 功能不同于 gtk.gdk.threads\u初始化()功能 该函数还初始化gdk

    基本上,您明确地告诉gobject模块您将使用线程并相应地初始化它。