python - 如何通过子进程向不同的 Python 文件发送和接收变量?
问题描述
我对子进程完全陌生,需要能够使用这个库将变量从一个 python 文件发送到另一个文件。
我对如何从主文件发送数据有一点想法(像这样?):
p = subprocess.Popen(['python', 'slave.py'], stdout=PIPE, stdin=PIPE, stderr=PIPE)
stdout_data = p.communicate(input='string')
但是如何在另一个文件中调用该变量?
不幸的是,由于我的项目的性质,我不能使用任何其他模块。
解决方案
您的描述有点模糊,但按照我的理解回答您的问题:
如果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 等)
推荐阅读
- android - 多个布局和多个视图 Android Studio
- c# - 将现有的 PdfDocument 保存到文件
- html - HTML 中的“简单”按钮脚本
- reactjs - 从 material-ui 自动完成组合框中清除所有选定的值
- c# - NFC MIFARE Classic 1K 无法读取或写入
- sql-server - 如何用动态列替换 T-SQL PIVOT 中的 NULL 值
- android - 如何在横向使用 ViewPager2 进行轮播布局
- reactjs - 反应钩子关闭问题
- data-visualization - 二次排序(单独)
- spring-boot - 为特定请求暂停骆驼路线