【问题标题】:Call a python script from a python script within the same context从同一上下文中的 python 脚本调用 python 脚本
【发布时间】:2019-12-16 20:42:56
【问题描述】:

有一个python脚本start_test.py

还有第二个python脚本siple_test.py

# pseudo code:
start_test.py --calls--> subprocess(python.exe simple_test.py, args_simple_test[])

两个脚本的 python 解释器是相同的。因此,我不想打开一个新实例,而是直接从start_test.py 运行simple_test.py。我需要保留 sys.args 环境。 很高兴实际上是在simple_test.py 中输入以下代码部分:

# file: simple_test.py
if __name__ == '__main__':
    some_test_function()

最重要的是,方式应该是通用的,不依赖于simple_test.py的内容。

这种设置有两个好处:

  1. 调用占用的资源要少得多
  2. simple_test.py的全栈可以用pycharm调试

那么,如何在不启动新子进程的情况下从 python 脚本执行 python 脚本的调用?

【问题讨论】:

  • 您可以像这样导入函数:from file import function 请参见此处:stackoverflow.com/questions/20309456/…
  • thx,但是如何保留子进程参数的各个上下文?就像 sys.args = ['my', 'awesome','test','args']。或者有没有更pythonc的方法呢?

标签: python pycharm


【解决方案1】:

“执行脚本”是一个有点模糊的术语。

通常if __name__== "__main__": 部分对参数 (sys.argv) 进行解码,然后调用带有显式参数的工作函数。为了清楚起见:它不应该做任何其他事情,因为如果不创建一个新进程就无法调用这些额外的工作,这会导致您试图避免的所有开销。

您只需绕过它并直接调用此实现例程。

所以你最终会得到包含类似以下内容的 start_test.py:

from simple_test import worker
# ...
worker(typed_arg1, typed_arg2)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-25
    • 1970-01-01
    • 1970-01-01
    • 2018-03-25
    相关资源
    最近更新 更多