python - 子进程调用函数
问题描述
我想使用 subprocess来调用 somme 命令,这是启动和停止子进程的示例:
import subprocess
# Start
proc = subprocess.Popen(command)
# Stop
proc.terminate()
但是现在我正在尝试定义一个单独的函数来执行该过程,就像:
import os,sys
import subprocess
class Process:
def __init__(self):
self.proc = None
def start(self,cmd):
self.proc = subprocess.Popen(cmd, shell=True)
def stop(self):
self.proc.terminate()
if __name__ == '__main__':
cmd = "XXXXX"
p =Process()
p.start(cmd)
p.stop()
它可以工作并且启动进程启动但它仍然存在并且即使使用 pid 终止进程也无法调用停止函数。
有没有办法通过调用 stop 函数来停止进程?
解决方案
我认为您的问题是该变量proc
是函数的本地变量start
,因此它不存在于函数之外。您可以尝试像这样返回变量:
def start(cmd):
return subprocess.Popen(cmd)
def stop(proc):
proc.terminate()
cmd= #your command
proc = start(cmd)
stop(proc)
推荐阅读
- machine-learning - 文本分类的数据增强
- java - 用于 REST 注释接口的 Spring Web 客户端代理
- tfs - TFSMigrator 错误:此工具尚不支持非交互式登录
- git - Git合并后保持新的变化
- linux - 如何从来源其他 Bash 脚本的任何目录 Bash 脚本执行(不使用路径变量)
- r - 如何避免由于 R 中的条带而导致重复文本?
- ios - 具有不同数组的多个表视图
- javascript - 从 Javascript 函数返回值设置 HTML 文本框值 - (Javascript)
- python - 在字典列表中查找常用字典值 - python
- javascript - 新音频会预加载声音文件吗?