有没有办法将标志传递给runpy?

我正在寻找一种使用runpy或其他工具传递杂项选项的方法。

特别是,我想在另一个未优化的 python 脚本中获取优化的 python 脚本的输出。

python -O tobeoptimized.py

我曾尝试使用子进程,但我无法像在 runpy 中那样提取我需要的对象。

from subprocess import PIPE, run
command = ['python','-O','tobeoptimized.py']
result = run(command, stdout=PIPE, stderr=PIPE, universal_newlines=True)

回答

不是,runpy因为它没有产生一个新进程,(exec())。如果可以这样做,这个问题就会有答案。因此,我们几乎陷入了 C 代码库或扩展世界,其中CPython的核心被修改为至少可以从 C API 访问,如果不能从 Python API 访问。

而是尝试使用子进程来传递标志。可以调整输出。

如果问题是您想从进程中提取一个对象(因此子进程“失败”),您需要查看pickle模块或简单地将其放入文件/缓冲区/套接字并以自定义方式检索数据+重新组装.

Subprocess 并不是真正强制性的,但是如果有任何其他实现,它不会“破解它”,因为阻碍的是编译的核心,而不是可以被猴子修补的东西。

我想我们需要核心开发人员的新功能?:)

关于子流程输出,这对我来说很好用。

# hello.py
print("Hello")
# main.py
from subprocess import Popen, PIPE

process = Popen(
    ["python", "-O", "hello.py"],
    stdout=PIPE, stderr=PIPE, universal_newlines=True
)
print(process.stdout.read())


以上是有没有办法将标志传递给runpy?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>