美文网首页
python subprocess&multiprocess

python subprocess&multiprocess

作者: hehehehe | 来源:发表于2021-06-15 16:38 被阅读0次

    https://www.cnblogs.com/brt2/p/13232368.html
    multiprocess: 是同一个代码中通过多进程调用其他的模块(也是自己写的)
    subprocess: 直接调用外部的二进制程序,而非代码模块

    subprocess

    run/call() 函数均为主进程阻塞执行子进程,直到子进程调用完成返回;

    subprocess.call("mv abc", shell=True) # depressed after python3.5
    subprocess.run(args, *, stdin=None, input=None, stdout=None, stderr=None, shell=False, timeout=None, check=False) -> subprocess.CompletedProcess
    

    如果 shell=True ,则将通过shell执行指定的命令。如果你希望方便地访问其他shell功能,如shell管道、文件名通配符、环境变量扩展和扩展,例如 ~ 到用户的主目录,这会很有用。

    # subprocess.run("ls | grep xxx".split(" "))
    # 以上语句,无法获取到想要的结果,因为subprocess本身并不执行 `|` 管道符
    subprocess.run("ls | grep xxx".split(" "), shell=True)
    

    Popen, 非阻塞

    class subprocess.Popen(args, bufsize=-1, executable=None, stdin=None, stdout=None, stderr=None, 
    preexec_fn=None, close_fds=True, shell=False, cwd=None, env=None, universal_newlines=False, 
    startupinfo=None, creationflags=0,restore_signals=True, start_new_session=False, pass_fds=(),
    *, encoding=None, errors=None)
    
    
    poll(): 检查进程是否终止,如果终止返回 returncode,否则返回 None。
    wait(timeout): 等待子进程终止。
    communicate(input,timeout): 和子进程交互,发送和读取数据。
    send_signal(singnal): 发送信号到子进程 。
    terminate(): 停止子进程,也就是发送SIGTERM信号到子进程。
    kill(): 杀死子进程。发送 SIGKILL 信号到子进程。
    

    相关文章

      网友评论

          本文标题:python subprocess&multiprocess

          本文链接:https://www.haomeiwen.com/subject/anbzeltx.html