gpt4 book ai didi

multithreading - PyQt4 中的线程

转载 作者:行者123 更新时间:2023-12-04 23:31:19 25 4
gpt4 key购买 nike

我正在制作一个调用 Imagemagick 和 ffmpeg 的 PyQt4 应用程序,但是完成任务需要太多时间,我想知道是否有办法为此实现线程,该应用程序将在多核机器上运行,以及一些方法我见过效率不够。提前致谢

最佳答案

答案是肯定的和否定的——你可以使用 QThread 进行线程化,但你仍然会受到 GIL 的约束,因此你的线程将串行运行。

您可以尝试使用多处理在其自己的进程中创建一个工作类并向其发送工作(或让它从队列中窃取工作),但这可能会在复制对象和在进程之间发送对象时引入其自身的性能损失......

重新阅读您的问题后,看起来 Imagemagick 和 ffmpeg 是外部可执行文件,在这种情况下,GIL 在您等待进程执行时被释放。我能问一下你是如何运行这些的吗?我倾向于发现创建工作队列和事件循环会更好。每次在事件循环中,您都会检查正在运行的进程是否已完成,然后获取它们的输出。对于这个 subprocess.Popen 比 os.command 更有用。

如果您使用 QTimer,您可以利用 QApplication 的事件循环,它还有一个额外的好处是允许您的 GUI(假设您有一个)在滴答声之间刷新。

关于multithreading - PyQt4 中的线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5224679/

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