【发布时间】:2019-08-04 20:09:54
【问题描述】:
我已经搜索过,但找不到答案。 我想从另一个 python 脚本(主脚本)调用一个 python 脚本(子脚本)。我不能将参数从父母传递给孩子? 我期待来自控制台的“子进程启动:id1-id2”。 但我得到的是“子进程启动:测试默认”。子进程使用默认参数,而不是从父脚本接收参数。
# parent
import subprocess
subprocess.call(['python', 'child.py', 'id1', 'id2'])
# script name: child.py
def child(id, id2):
print ('subprocess launched: {}-{}'.format(str(id), id2))
if __name__ == '__main__':
main(id='test', id2='default')
【问题讨论】:
-
你打电话给
main(..)而不是child(..)。 -
还可以,但是这些参数在
sys.args。 -
抱歉没听懂你在说什么。我想要一个子进程而不是直接调用 main 。这样我的父脚本可以继续运行,而不是等待孩子完成。@WillemVanOnsem
-
每个脚本都从
sys.args中的命令行获取参数,但您的child.py不使用sys.argv -
@Lisa, ...如果这就是你想要做的全部,有更便宜/更有效的方法来
fork()一个你当前解释器的副本,启动时初始化已经完成;当您使用subprocess启动一个全新的解释器时,它会支付第二次启动成本的费用。有关示例,请参见多处理模块。当然,还有线程(尽管这是否合适取决于实现细节)。
标签: python subprocess