From a8179d6a58cceb7d8999c8d7344611224ad625b7 Mon Sep 17 00:00:00 2001 From: Yann Salmon Date: Tue, 12 Mar 2019 11:58:02 +0100 Subject: [PATCH] =?UTF-8?q?compilation=20des=20versions=20en=20parall?= =?UTF-8?q?=C3=A8le?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- latex/maketd.py | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/latex/maketd.py b/latex/maketd.py index 09e5e3c..b733054 100755 --- a/latex/maketd.py +++ b/latex/maketd.py @@ -4,13 +4,24 @@ import subprocess import sys import os -def compiler(nf, suff) : +def compiler(nf, lsuff) : basedir = os.path.dirname(nf) builddir = os.path.join(basedir, "_build") basejobname = os.path.splitext(os.path.basename(nf))[0] - options = suff[1] - subprocess.call('''latexmk -pdflua -shell-escape -bibtex-cond -cd -interaction=batchmode -dvi- -jobname=''' +basejobname+suff[0] +''' -outdir=''' + builddir + ''' -latexoption="--output-directory='''+builddir+''' --synctex=0 ''' + options + '''" ''' + nf, shell=True) - os.rename(os.path.join(builddir, basejobname+suff[0]+".pdf"), os.path.join(basedir, basejobname+suff[0]+".pdf")) + # https://stackoverflow.com/a/9745864 + processes = [] + for suff in lsuff : + options = suff[1] + processes.append(subprocess.Popen('''latexmk -pdflua -shell-escape -bibtex-cond -cd -interaction=batchmode -dvi- -jobname=''' +basejobname+suff[0] +''' -outdir=''' + builddir + ''' -latexoption="--output-directory='''+builddir+''' --synctex=0 ''' + options + '''" ''' + nf, shell=True, stdout=subprocess.PIPE, + bufsize=1, close_fds=True, + universal_newlines=True)) + while len(processes) > 0 : + for p in processes: + if p.poll() is not None: # process ended + p.stdout.close() + processes.remove(p) + for suff in lsuff : + os.rename(os.path.join(builddir, basejobname+suff[0]+".pdf"), os.path.join(basedir, basejobname+suff[0]+".pdf")) @@ -36,7 +47,5 @@ with open(nf) as f : break - -for suff in modes : - compiler(nf, suff) +compiler(nf, modes)