让Python脚本持续运行的简单方法是什么?

3
我想要一个简单的脚本在后台持续运行。它目前是这样的:
import keyboard

while True:
    keyboard.wait('q')
    keyboard.send('ctrl+6')

现在,这已经可以工作了(当按下q键时,它也会按下ctrl+6),但我想肯定有更有效的方法来保持程序运行,以便它可以对输入进行操作。

我不想使用无限循环。

我在Windows上。

谢谢 :)


7
这实际上就是做法。这是最有效的方法。你可以插入一个time.sleep(0.025)或类似的东西来避免占用CPU(除非keyboard.wait()是一个阻塞调用,那么这无关紧要)。也许可以实现一个事件驱动的触发器,以使动作不依赖于睡眠/循环之间的时间间隔(例如,import select就是这样做的)。但是,while循环是保持某个条件下运行并等待的最有效方式之一。 - Torxed
我也会研究一下选择模块。 - Jojo
3个回答

5
你可以使用 nohup
nohup python script.py > log.txt 2>&1 &

如果你想要检查命令是否正在运行

ps aux | grep script

user    5124 <- process_id  1.0  0.3 214588 13852 pts/4    Sl+  11:19   0:00 python script.py

正在运行 Kill 命令。

kill -9 [process_id]

4

这取决于您使用的平台。在Linux终端中,您可以在脚本末尾加上&,以将其作为后台进程启动:

python script.py &

您可以使用以下命令查找后台进程:

ps -ef | grep script.py

并且结束进程:

kill <pid number>

在Windows中,情况稍微复杂一些,但答案在这里:这里
注意:我建议在您的脚本中添加time.sleep(0.025)命令(如评论中所述)。

我使用的是Windows操作系统。很抱歉没有在最开始说明,我已经修改了我的问题。谢谢你的帮助 :) - Jojo
我的问题回答中有一个关于Windows的部分! - Hans Daigle

2
我正在寻找相同的东西,然后来到了这里。这是另一种解决方案。对我很好用,可能也对其他人有用。
在命令行中使用-i选项。因此,如果你的Python脚本是foo.py,在命令行执行以下操作:
python -i foo.py

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接