如何停止正在运行的Python脚本

1 投票
1 回答
1444 浏览
提问于 2025-04-17 15:52

我用PyQt做了一个图形界面,里面有“开始”和“停止”这两个按钮。当我点击“开始”按钮时,会启动一个很大的Python脚本。而“停止”按钮的功能是要结束这个Python脚本,但当我启动脚本后,它就一直在运行,我无法停止它。甚至连图形界面上的其他功能都无法使用,完全没有反应。所以我只能等着这个Python脚本运行完,时间很长。请问我该怎么做,才能让“停止”按钮在任何时候都能中断这个脚本呢?

1 个回答

0

因为你在QButton.clicked信号里做了所有的事情,所以你的界面会一直卡住,直到你退出那个函数。

我在一个小项目中用的解决办法是把它分成一个界面和一个工作进程。

使用 multiprocessing.Process 来处理你的任务,然后通过 multiprocessing.Pipe 发送结果。工作进程还需要一个第二个管道来接收命令(我这个项目只用一个命令 - 退出)。

在界面中,你需要创建两个管道:一个用来接收结果,一个用来发送命令。初始化工作进程时,把这两个管道都传进去,然后启动这个进程。

接下来,你可以用QTimer定期检查管道,获取结果并显示出来。

这样做的话,你的界面在计算的时候依然可以正常使用,不会卡住。

撰写回答