gpt4 book ai didi

python - 子进程或导入以在 Python 中调用脚本

转载 作者:太空宇宙 更新时间:2023-11-04 00:21:46 33 4
gpt4 key购买 nike

我有一个脚本 task.py 我正在尝试调用。似乎有两种方法可以做到这一点。一种是使用subprocess API,另一种是使用Python的导入机制。

任务.py

def call_task():
print("task in progress...")
return "something"

print("calling task..")
out = call_task()
print("output of the executed task::", out)

现在,我们有两种方法来调用上述 task.py python 脚本。

方法一

import task as task

print("invoke call-task")
out = task.call_task()
print("output::", out)

方法二

import subprocess, shlex, PIPE

proc = subprocess.Popen(shlex.split("python task.py"), stdout = PIPE)
out = proc.communicate()
print("output::", out)

虽然这两种方法都有效,但哪种方法更符合 Pythonic?

最佳答案

从 Python 运行一个单独的 Python 进程通常是一种反模式。在某些情况下,您特别想要两个 Python 实例(例如,如果您要使用的模块需要其自己的信号处理等),但在没有强制其他选择的因素的情况下, import 在可用性方面通常非常受欢迎(您可以按照与其主要流程不同的顺序调用包内的函数,并且对内部有更细粒度的控制)和性能(启动一个单独的进程如果可以避免,几乎总是一个坏主意)。

关于python - 子进程或导入以在 Python 中调用脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48862112/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com