【发布时间】:2014-01-16 00:05:08
【问题描述】:
那么我应该在我的程序开头运行什么以使其成为线程安全的(或者我在某些地方读到的线程感知):
from gi.repository import Gtk, Gdk, GLib, GObject
import threading
GLib.threads_init() # ?
GObject.threads_init() # YES!
Gdk.threads_init() # ?
my_app()
def my_threaded_func():
Glib.idle_add(lambda: some_gui_action())
Glib.timeout_add(300, lambda: some_gui_action())
t = threading.Thread(target=my_thread_func)
t.daemon = True
t.start()
Gtk.main()
那么,我应该在我的线程中做什么?某种锁?使用 Python 的线程库是否安全,或者我应该在 GLib、GObject 或 Gdk 中使用某些东西?我知道那里有很多问题/答案/示例,但它们都相互矛盾,不适用于 Gtk+ 3,不适用于 Python,或者根本不完整,甚至我认为 Python GI 的官方文档(@ 987654321@) 甚至没有提到 GObject.threads_init() 和 Gdk.threads_init() 的存在。
【问题讨论】:
标签: python multithreading gtk3