首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在命令提示符中将python变量传递给进程

如何在命令提示符中将python变量传递给进程
EN

Stack Overflow用户
提问于 2019-06-28 17:17:12
回答 2查看 256关注 0票数 1

我有一个python循环,它在每次迭代时在新路径中创建一个新图像。我希望将该路径发送到之前执行的一个进程中,该进程正在等待命令提示符下的路径。

更详细地说:

我正在运行python中的自动驾驶模拟器,每隔5帧我就想将当前帧(保存在RAM磁盘中)测试到我训练过的对象检测器算法中(该算法花了大约9ms来检测我的对象,但2秒来打开这个过程)。实际上,我使用子进程模块执行经过训练的算法,但我遇到的问题是,当该进程打开时(我只打开进程一次,当我运行主脚本时),它正在等待路径图像。我相信,有了你的提示,我已经接近答案了,但我不需要面对如何将路径图像传递给这个在每5帧迭代中等待它的子过程。

PD:我使用的是Windows,Python 3.5.4

你知道我能做什么吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-30 20:27:05

感谢您的所有评论和帮助。我终于做到了。

我使用库'pexpect‘,它允许在python脚本中使用函数process = popen_spawn.PopenSpawn启动程序。然后,该库中一个名为'send‘的函数允许将参数传递给正在运行的进程(process.send(arg))。

在我的例子中,我在脚本的开头启动程序(.exe),将该实例定义为一个全局变量。然后,我只需在每次迭代中执行send函数。

票数 0
EN

Stack Overflow用户

发布于 2019-06-28 18:30:17

如果你在一个*nix环境中,并且我理解你想要什么,pipes提供了你想要做的事情。我不知道Windows,但也许同样的概念也可以用在那里。

这里有一个简单的例子来说明这一点:

Pipe1a.py:

代码语言:javascript
运行
AI代码解释
复制
#!/usr/bin/env python

import time
import sys

for i in range(10):
    time.sleep(1) # represent some processing delay
    print("filename{}.jpg".format(i))
    sys.stdout.flush()

Pipe1b.py:

代码语言:javascript
运行
AI代码解释
复制
#!/usr/bin/env python

import sys

while True:
    line = sys.stdin.readline()
    if len(line) == 0:
        break
    print "Processing image '{}'".format(line.strip())

如果您将这两个脚本都设置为可执行脚本,则可以通过命令提示符处的管道将它们链接在一起:

代码语言:javascript
运行
AI代码解释
复制
> Pipe1a.py | Pipe1b.py

结果输出:

代码语言:javascript
运行
AI代码解释
复制
Processing image 'filename0.jpg'
Processing image 'filename1.jpg'
Processing image 'filename2.jpg'
Processing image 'filename3.jpg'
Processing image 'filename4.jpg'
Processing image 'filename5.jpg'
Processing image 'filename6.jpg'
Processing image 'filename7.jpg'
Processing image 'filename8.jpg'
Processing image 'filename9.jpg'

这里的概念是一个进程将数据写入它的stdout,另一个进程从它的stdin读取数据。

如果您不想使用命令提示符将它们串在一起,而是想运行单个脚本,那么您可以使用Python subprocess1模块,用几乎相同的代码完成相同的操作。对于本例,您可以让Pipe1b.py程序通过subprocess.Popen运行Pipe1a.py程序,然后以同样的方式处理其输出。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56810924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档