Python LibreOffice convert.docx到.pdf并行运行不正常

Python LibreOffice convert.docx到.pdf并行运行不正常,python,pdf,docx,libreoffice,Python,Pdf,Docx,Libreoffice,我有很多docx文件要转换成pdf。逐个转换它们需要很长时间。因此,我编写了一个python脚本来并行转换它们: 从子流程导入Popen 导入时间 导入操作系统 chdir(os.path.dirname(_文件__)) 输出_dir='./输出' source_file_format='./docs/example_{}.docx' po_list=[Popen( f“/Applications/LibreOffice.app/Contents/MacOS/soffice--不可见--转换为p

我有很多docx文件要转换成pdf。逐个转换它们需要很长时间。因此,我编写了一个python脚本来并行转换它们:

从子流程导入Popen
导入时间
导入操作系统
chdir(os.path.dirname(_文件__))
输出_dir='./输出'
source_file_format='./docs/example_{}.docx'
po_list=[Popen(
f“/Applications/LibreOffice.app/Contents/MacOS/soffice--不可见--转换为pdf--outdir{output_dir}{source_file_format.format(i)}”,
shell=True)
对于范围(0,7,1)内的i)]
而po_列表:
睡眠时间(0.01)
对于枚举中的i,p(po_列表):
status=p.poll()
如果状态为“无”:
持续
elif状态==0:
打印('Succeed:[{}]{}->{}'。格式(p.returncode,p.stderr,p.args))
采购订单清单。删除(p)
其他:
打印('Failed:{}:{}'。格式(p.args,p.poll())
采购订单清单。删除(p)

但是每次我运行这个脚本时,只有一部分docx文件被成功转换。rest转换过程甚至不会抛出任何错误信息。

我们也在同一问题上纠缠了一段时间

LibreOffice的多个实例使用一个UserInstallation目录共享同一个空间,因此并行转换在这里产生了一个问题(间歇过程似乎混淆了)

为libre的每个实例使用不同的目录有助于解决这个问题。您可以通过UserInstallation env变量来实现这一点,该变量可以作为:“-env:UserInstallation”传递=file:///d:/tmp/p0/"

您可以通过在目录中附加循环变量或任何唯一标识符来自动执行此操作


参考:

若要查看故障发生的位置,请使用模拟转换的脚本替换LibreOffice调用(将某些内容写入输出目录并使用一些时间),然后检查结果。如果所有文件都存在,那么LibreOffice似乎有问题。如果文件丢失,则是您的脚本。-如果是LibreOffice,我会确保:打开多个shell,在每个shell中准备一个命令行,然后尽快启动所有shell。我也有同样的问题。我测试了一个简单的函数,并行部分正在工作,当我尝试使用LibreOffice时,我从joblib import parallel发出了问题
,延迟导入os def convert_docx_to_pdf(file_convert:str,output_folder:str):“使用Libre Office将文档或docx文档转换为pdf”结果=subprocess.call(['lowriter','-convert to','pdf','-outdir',output_folder,file_to_convert])并行返回结果(n_jobs=2,preference=“threads”,timeout=60)(对于文件中的文件,延迟(将docx_转换为pdf)(file,os.path.dirname(file))