首页 > 解决方案 > 如何从 Python 异步调用 shell 脚本?

问题描述

我有一个 shell 脚本,它对传递的字符串进行一些处理,然后将其写入文件。但是我不希望我的函数 foo() 等待它完成操作。我如何调用process(msg)然后继续执行{code block 2}而不等待process(msg)执行完成?

def process(msg):
    subprocess.call(['sh', './process.sh', msg])

def foo():
    # {code block 1}
    process(msg)
    # {code block 2}

foo()将从另一个函数调用,几乎每秒一次或两次。

标签: pythonsubprocesspython-3.7python-multithreadingpython-3.8

解决方案


您需要的是https://docs.python.org/3/library/os.html#os.fork ,即os.fork()这样您就可以生成一个子进程,该子进程的寿命可以超过父进程,以后可以systemd在 Linux 上声明该子进程。我对Windows一无所知。


推荐阅读