有没有一种方法可以在后台运行 python 线程,而无需在耗时的指令期间锁定 python 的其余部分?
我正在尝试在 python (pygtk) 应用程序的后台线程中进行耗时的计算。我了解线程是如何工作的。问题是,每次我在任何线程中运行一个昂贵的操作(例如:PIL 的 image.load() 用于大图像),它都会阻塞所有 python 线程,直到操作完成,即使它是在单独的线程中。
那么,有没有一种方法可以在后台运行 python 线程而不锁定 python 的其余部分? (我不在乎他们花了多长时间,只要他们不锁定我的 GUI。我只是不能让我的 GUI 一次无响应几秒钟)。使用 sleep 语句不起作用,因为我的问题是需要很长时间的单个命令(例如 image.load())。
既然你使用的是 pygtk,你打电话了吗?threads_init()
?
对于较新的版本:
>>> from gi.repository import GObject
>>> GObject.threads_init()
对于年纪较大的人来说:
>>> import gobject
>>> gobject.threads_init()
还要确保您没有从线程中调用任何 GUI 方法,否则您的应用程序将以奇怪的方式中断。解决这个问题的一个简单方法是使用GObject.idle_add
:
idle_add(可调用,user_data=None,priority=None) -> 源id
可调用接收(user_data)
添加一个可调用对象,以便在没有更高优先级时调用
事件等待默认主循环。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)