gpt4 book ai didi

python - 在后台线程 python/pygtk 中运行计算

转载 作者:太空狗 更新时间:2023-10-30 03:05:27 24 4
gpt4 key购买 nike

有没有一种方法可以在后台运行 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(callable, user_data=None, priority=None) -> source id callable receives (user_data)

Adds a callable to be called whenever there are no higher priority events pending to the default main loop.

关于python - 在后台线程 python/pygtk 中运行计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12094555/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com