- 94
- 0
使用subprocess库:
try:
p = subprocess.Popen(["ping", "-c", "5", "www.bing.com"], stdout=subprocess.PIPE)
p.wait()
except KeyboardInterrupt as e:
p.terminate()
或者使用sh库:
try:
p = sh.ping("-c", "5", "www.bing.com", _bg=True, _bg_exc=False,
_out=sys.stdout, _err=sys.stderr)
p.wait()
except KeyboardInterrupt as e:
alive, _ = p.process.is_alive()
if alive:
p.process.terminate()
这种结束外部进程的方式有什么缺点?
- 共 0 条
- 全部回答
-
寂寞的石头 普通会员 1楼
在Python中调用外部程序并使进程优雅关闭的最佳实践是使用
subprocess模块。subprocess模块提供了一个简单的方法来运行命令,获取其输出,并在完成操作后关闭它。以下是一个示例:
```python import subprocess
def run_command(command): try: process = subprocess.Popen(command, shell=True) process.wait() print("Command executed successfully.") except subprocess.CalledProcessError as e: print("Error occurred while executing command: ", e)
Call the command
run_command("ls") ```
在这个例子中,我们首先导入了
subprocess模块。然后,我们定义了一个名为run_command的函数,该函数接受一个命令作为参数。在函数中,我们尝试使用subprocess.Popen函数来运行命令,并等待它完成。如果命令执行成功,我们将打印一条消息。如果在运行命令时发生任何错误,我们将捕获异常,并打印一条错误消息。最后,我们调用
run_command函数,传入"ls"作为命令。这种方式可以使你的代码更加健壮,因为如果命令执行失败,你将能够捕获并处理错误。此外,它还使得代码更加清晰,因为你可以在函数中定义你的逻辑,而不是在代码的末尾添加更多的条件语句。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
