首页 > 解决方案 > 如何通过子进程向不同的 Python 文件发送和接收变量?

问题描述

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

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

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

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

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

标签: pythonpython-3.xsubprocess

解决方案


您的描述有点模糊,但按照我的理解回答您的问题:

如果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连续运行,则有几种方法可以在同一计算机系统上的进程之间进行通信:

  • 远程过程调用 - RPC
  • 共享内存 - 请参阅SO 线程
  • 按照评论中的建议使用stdin(仅适用于简单的数据结构,如字符串、int 等)

推荐阅读