背景
在一些很扯淡的场景中,训练用的环境必须使用win的平台,就必须要考虑,在算法中间件的层面,如何在win上做训练,如果再加一些限制比如必须用python调用darknet.exe做模型训练,就需要考虑python如何调用exe文件了。
参考资料
https://blog.csdn.net/qq_36941368/article/details/103801362 python运行带参数传入的exe文件
https://blog.csdn.net/weixin_42305206/article/details/103984318 python在命令行执行exe文件并且获得输出
https://www.cnblogs.com/liangmingshen/p/9274021.html Python 字符串前面加u,r,b的含义
解决方案
最终采用的解决方案是使用subprocess,代码如下:
import subprocess
order=r'cmd下的命令即可!'
pi= subprocess.Popen(order,shell=True,stdout=subprocess.PIPE)
for i in iter(pi.stdout.readline,'b'):
print(i.decode('gbk')) //编码问题
这种方案的问题在于,如果是动态参数,没办法传入,必须是一个固定的串。这就要求上层的应用必须设计好串,然后拿来直接训练。
还有一种方案是执行批处理脚本,然后顺序传参,问题在于,参数还是固定的,没办法动态传参。