Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Python中启动、监视和终止进程

如何在Python中启动、监视和终止进程
EN

Stack Overflow用户
提问于 2021-12-16 08:17:03
回答 1查看 129关注 0票数 0

我需要能够在Python中启动一个长期运行的过程。当进程运行时,我需要将输出管道输送到我的Python应用程序中,以便在UI中显示它。UI还需要能够杀死进程。

我做了很多研究。但我还没找到办法把这三件事都做好。

subprocess.popen()允许我启动一个进程,并在需要时终止它。但是它不允许我在进程完成之前查看它的输出。而我所监测的过程从来没有单独完成过。

os.popen()允许我启动一个进程,并在它运行时监视它的输出。但我不知道怎么杀死它。我通常处于readline()调用的中间。

在使用os.popen()时,是否有方法在调用read()或readline之前知道缓冲区中是否有任何数据?例如..。

代码语言:javascript
运行
AI代码解释
复制
output = os.popen(command)
while True:
    # Is there a way to check to see if there is any data available
    # before I make this blocking call?  Or is there a way to do a 
    # non-blocking read?
    line = output.readline()
    print(line)

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-16 08:54:21

我建议使用subprocess.Popen对进程进行细粒度控制。

代码语言:javascript
运行
AI代码解释
复制
import subprocess


def main():
    try:
        cmd = ['ping', '8.8.8.8']
        process = subprocess.Popen(
            cmd,
            stdout=subprocess.PIPE,
            stderr=subprocess.PIPE,
            universal_newlines=True,
            bufsize=1,
            text=True
        )
        while True:
            print(process.stdout.readline().strip())

    except KeyboardInterrupt:
        print('stopping process...')
        process.kill()


if __name__ == '__main__':
    main()
  • stdoutstderr kwargs设置为subprocess.PIPE允许您通过.communicate读取各自的流,而不是将它们打印到父流(因此它们会出现在运行脚本的终端中)
  • .kill()允许您在任何时候终止进程。
  • process.stdoutprocess.stderr可以在任何时候被查询以获得它们的当前行,通过readline(),或者通过read()readlines()获取任意数量的缓冲区内容。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70382310

复制
相关文章
如何在 Python 中终止 Windows 上运行的进程?
当深入研究Windows操作系统上的Python开发领域时,无疑会出现需要终止正在运行的进程的情况。这种终止背后的动机可能涵盖多种情况,包括无响应、过度资源消耗或仅仅是停止脚本执行的必要性。在这篇综合性的文章中,我们将探讨各种方法来完成使用 Python 终止 Windows 上运行的进程的任务。通过利用“os”模块、“psutil”库和“子流程”模块,我们将为自己配备一个多功能工具包来解决这项势在必行的任务。
很酷的站长
2023/08/11
9630
如何在 Python 中终止 Windows 上运行的进程?
如何在 Python 中启动后台进程?
后台进程是在后台运行的程序或任务,它们不会阻塞主程序的执行,并可以在后台处理一些耗时或周期性的任务。在本文中,我们将探讨如何在Python中启动后台进程,并介绍一些内置模块和第三方库来实现这一目标。
网络技术联盟站
2023/08/03
2K0
如何在 Python 中启动后台进程?
如何在 Python 中启动后台进程?
后台进程是在后台运行的程序或任务,它们不会阻塞主程序的执行,并可以在后台处理一些耗时或周期性的任务。在本文中,我们将探讨如何在Python中启动后台进程,并介绍一些内置模块和第三方库来实现这一目标。
网络技术联盟站
2023/07/14
5280
如何在 Python 中启动后台进程?
如何在 Linux 命令行中终止进程?
如果命令/进程在前台运行,您可以使用 Ctrl+C 终端快捷方式,但是,如果进程不可见(在后台运行),您可以使用专用命令“杀死它”。
网络技术联盟站
2022/05/30
7.6K0
如何在 Linux 命令行中终止进程?
Python监视进程创建情况和系统服务状态
(1)监视Windows系统中进程创建情况 import wmi c = wmi.WMI() process_watcher = c.Win32_Process.watch_for('creation') while True: try: new_process = process_watcher() proc_owner = '{0[0]}\\{0[1]}'.format(new_process.GetOwner()) temp_creation
Python小屋屋主
2018/04/16
1.1K0
【工控技术】如何在 WinCC 中实现变量状态监视和连接状态监视?
在该 FAQ 的第一部分创建一个检视变量的全局脚本动作藉此仅在输出窗口中输出一条信息。在第二部分配置全局脚本动作以实现即在窗口中输出消息又触发一条报警的目的。
剑指工控
2021/11/09
3.6K0
Windows内核之进程的终止和子进程
<2>进程中的一个线程调用ExitProcesss函数(应该避免使用这样的方法)。
全栈程序员站长
2022/07/12
1.8K0
Linux进程终止
在Linux下,进程退出就表示进程即将结束了(为什么是即将,这是因为Linux设计的是父进程给子进程收尸)。正常退出包括3种情形。
zy010101
2022/05/05
2.5K0
Linux进程终止
python启动应用程序和终止应用程序
每天上班,工作需要,电脑上需要每天开机启动一些软件,下班时候,需要关掉一些软件。一个一个打开和关闭貌似是很繁琐的,于是乎,这个脚本产生了。
py3study
2020/01/07
2.5K0
Linux 终止进程 killall
killall 命令用于杀死指定名字的进程(kill processes by name),即结束同名的的所有进程。在使用kill命令终止进程需要先获取进程PID,而使用killall命令直接使用进程名称,即可终止进程。
为为为什么
2022/08/06
2.1K0
redis Windows 服务 启动异常,错误1067:进程意外终止。 原
注意这个命令中使用的是 redis.windows-service.conf 这个配置文件
北漂的我
2019/05/29
5.5K0
终止进程的方法
kill -9 PID 如果知道进程名称,可以使用killall杀死该名称的所有进程。 killall -9 name
hankfu
2020/11/24
1.6K0
如何在Linux中挂起和恢复进程?
在Linux操作系统中,挂起和恢复进程是一种管理和控制运行中进程的重要操作。挂起进程将其置于休眠状态,而恢复进程则重新激活它们以继续执行。这种操作对于优化系统资源的使用、调试进程以及实现进程间通信等方面都非常有用。
网络技术联盟站
2023/06/08
3.1K0
如何在Linux中挂起和恢复进程?
VC++中如何启动外部进程和关闭某个进程
三个SDK函数: WinExec, ShellExecute,CreateProcess
ccf19881030
2020/05/27
3K0
如何快速终止Linux进程
当你打开某个程序时,可能会遇到程序会锁死、停止运行、或者意外死机。你尝试再次运行该程序,系统反馈说原来的进程没有完全关闭。
丰一川
2018/08/16
3.7K0
nohup和&后台运行,进程查看及终止 原
  无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中。
拓荒者
2019/03/11
2.9K0
nohup和&后台运行,进程查看及终止
                                                                            原
iOS—-SIGPIPE信号终止进程[通俗易懂]
#概念: SIGPIPE,当一个程序a调用send函数向一个服务A发送信号的数据,服务A在接收数据的时候突然挂掉、无法接收数据、没有接收者,那么内核就会发送一个SIGPIPE信号,从而中断进程,导致程序退出。
全栈程序员站长
2022/09/13
1.4K0
如何在 Linux 中启动和停止监控模式?
监控模式是一种网络工具,允许计算机以无线接收器的形式接收和分析无线信号。在Linux系统中,您可以使用一些命令和工具来启动和停止监控模式。
网络技术联盟站
2023/05/29
3.4K0
如何在 Linux 中启动和停止监控模式?
linux杀死进程命令kill_linux中终止命令
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/11
4.7K0
kill命令批量终止后台进程
因为数据量太大,大概一次执行太多了,总共727个样本,.sra文件每个平均大概5个G。一次批量转成200个样本到fq格式,结果内存爆了。所以需要终止进程。
Y大宽
2019/05/21
2.5K0
kill命令批量终止后台进程

相似问题

如何在maven中启动和终止后台进程

123

Python在监视进程启动吗?

20

终止进程,启动进程

12

从python函数启动和终止子进程

37

如何在pexpect子进程中终止和重新启动进程?

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档