如何在python中使用trtexec作为子进程

Posted

技术标签:

【中文标题】如何在python中使用trtexec作为子进程【英文标题】:How to use trtexec as a subprocess in python 【发布时间】:2021-06-13 08:56:33 【问题描述】:

我有一个 python 程序,我在该 .py 文件中有以下代码 sn-p,它使用 trtexec 将 ONNX 模型转换为 TRT 引擎:

if USE_FP16:
    subprocess.run([sys.executable, "-c", "trtexec --onnx=rmpx.onnx --saveEngine=rmpx_engine_pytorch.trt --explicitBatch --fp16"])
else:
    subprocess.run([sys.executable, "-c", "trtexec --onnx=rmpx.onnx --saveEngine=rmpx_engine_pytorch.trt --explicitBatch"])
f = open("/home/my_username/github/TensorRT/quickstart/IntroNotebooks/rmpx_engine_pytorch.trt", "rb")

但是这个子进程不会生成 trt 文件。我得到文件未找到错误。 有人知道我在这里做错了吗?

【问题讨论】:

【参考方案1】:

就我而言,它可以通过这种方式成功运行。

onnx_file_path = 'rmpx.onnx'
engine_file_path = 'rmpx_engine_pytorch.trt'
command = 'trtexec --onnx=' + onnx_file_path + ' --saveEngine=' + engine_file_path + ' --workspace=2048 --explicitBatch --fp16'
subprocess.run(command,shell=True)

您可以先检查是否可以在该文件夹中找到trt引擎(rmpx_engine_pytorch.trt)! 基本上,生成trt引擎需要一些时间。

【讨论】:

以上是关于如何在python中使用trtexec作为子进程的主要内容,如果未能解决你的问题,请参考以下文章

如何为python安装子进程模块?

如何在python的子进程中执行一组语句?

使用子进程时如何在 Python 中复制 tee 行为?

使用子进程时如何在 Python 中复制 tee 行为?

如何使用 python 子进程模块将 sqlplus 作为 sudo 连接到 oracle 用户?

父进程全局变量如何复制到python多处理中的子进程