Rya*_*son 11 python gobject thread-safety gstreamer
我编写了一个python脚本来使用gstreamer(pygst和gst模块)来计算replaygain标签,并且它与各种gobject错误不一致.我发现你可以通过在脚本顶部放置以下样板来解决这个问题:
import gobject
gobject.threads_init()
Run Code Online (Sandbox Code Playgroud)
我试了一下,它运作了.任何人都可以解释为什么这些行是必要的,为什么pygst本身不这样做?
pyf*_*unc 14
因为,您可以在非线程环境中使用gobject.这并不罕见.在线程环境中使用gobject时,需要通过调用gobject.threads_init()显式初始化.这也将确保调用何时"C"函数,释放GIL.
同样来自功能文档:
threads_init()函数初始化了gobject模块中Python线程的使用.此函数与gtk.gdk.threads_init()函数不同,因为该函数还初始化gdk线程.
基本上,您明确告诉gobject模块您将使用线程并相应地初始化它.