如何通过子流程将变量发送和接收到不同的Python文件?

时间:2018-12-02 20:50:27

标签: python python-3.x subprocess

我对子流程完全陌生,需要能够使用此库将变量从一个python文件发送到另一个。

我对如何从主文件发送数据有点了解(像这样?):

p = subprocess.Popen(['python', 'slave.py'], stdout=PIPE, stdin=PIPE, stderr=PIPE)
stdout_data = p.communicate(input='string')

但是如何在另一个文件中调用该变量?

不幸的是,由于项目的性质,我不能使用任何其他模块。

1 个答案:

答案 0 :(得分:1)

您的描述有些含糊,但据我所知可以回答您的问题:

如果每次需要将变量传递给slave.py时,都可以将其作为cli的参数传递。

var1='simple data structure such as string, int etc.'
subprocess.call(['python', 'slave.py', var1])`

然后在slave.py中从sys.argv获取此变量:

import sys
name_of_program = sys.argv[0]
var1 = sys.argv[1]

如果slave.py连续运行,则有几种方法可以在同一计算机系统上的进程之间进行通信:

  • Remote Procedure Calls - RPC
  • 共享内存-请参见this SO线程
  • 按照注释中的建议使用stdin(仅适用于简单的数据结构,例如字符串,整数等)