有关将 C# 代码与 django 后端集成的建议

问题描述 投票:0回答:1

我使用 C# 将文档(pdf、docx 等)转换为其他格式(docx、xls、ppt 等),我的后端是用 Python (django) 编写的

我成功编写并加载了一个 c# dll,它让我可以使用 pythonnet clr 调用它的函数并直接从 python 转换文档

问题是,它很慢,比使用相同的代码稍微慢一些(我想说慢20倍),就好像我将其编译并作为可执行文件运行,而不是将其作为dll加载到python

所以我需要一个建议,我是否应该将 C# 代码制作成可执行文件,然后通过带有文件路径参数的子进程调用它(这将迫使我将文件写入磁盘,调用子进程,子进程将依次执行)读取文件,然后再次写入,然后python将读取输出文件并将其删除)或者有其他选择吗?

使用 dll 解决方案,我只需将文件字节传递给 dll,不需要将文件写入磁盘,这(对我来说)是一个更好的解决方案,但不会以那么大的速度差异为代价。

我假设将整个文件的内容(字节)作为参数传递给子进程是一个坏主意,考虑到内存和其他原因。

任何建议都将受到欢迎!谢谢!

将其作为 dll 加载,太慢了...

python c# .net django
1个回答
0
投票

如果可执行文件速度更快,这听起来是个好主意。

您可以修改 C# 可执行文件以从标准输入流读取输入,并从 Python 写入:

import shutil
import subprocess

proc = subprocess.Popen(
    ["my-software"],
    stdin=subprocess.PIPE,
    stdout=subprocess.PIPE,
    stderr=subprocess.PIPE,
)
with open("my_document.pdf", "rb") as pdf:
    shutil.copyfileobj(pdf, proc.stdin, length=131072)
proc.stdin.close()
# read the output
stdout, stderr = proc.communicate()
© www.soinside.com 2019 - 2024. All rights reserved.