来自 Streamlit 应用程序的 Python 部分并行代码

Run portion of Python code in parallel from a Streamlit app

我有一个 Streamlit 应用程序,可以将一批能源模型配置为 运行 和一个单独的代码模块,可以并行构建和 运行s 这些模型。退出代码当前使用 SCOOP (https://scoop.readthedocs.io/en/0.7/) 来处理多处理,通常 运行s 与 python -m scoop run.py。有没有办法 运行 Streamlit 但传入那个标志?

我也尝试过使用子进程 运行 使用 SCOOP 的文件,例如:

    with st.spinner('Running batch'):
        p = subprocess.run(["python", "-m scoop", "run.py"])

但是这个 returns 返回代码 1 说 /venv/bin/python: No module named scoop。 运行 这样的 SCOOP 是否可行,或者我是否需要重构才能使用 Python 内置多处理库?

对于这样的代码,您需要格外小心地指定您指的是哪个 python

p = subprocess.run(["python", "-m scoop", "run.py"])

执行此操作时,您将获得系统路径上的 Python 版本,不一定是您正在使用的 venv。

你最好运行把这条线设置为 p = subprocess.run(["/path/to/python", "-m scoop", "run.py"])

编辑:您也可以运行这样的东西来检测 Streamlit 代码 运行ning 在

下的可执行文件

subprocess.run([f"{sys.executable} ", "-m scoop", "run.py"])