Ich habe zwei separate subprocess
Aufrufe in einer Django-App, jeder in einer anderen Ansicht. Der erste ruft das Bildkonvertierungstool dcraw auf, um ein hochgeladenes Rohbild in ein Tiff-Format zu konvertieren. (Die .tiff-Ausgabe ist in der Regel neunmal größer als die Eingabe, z. B. ergibt ein 8 MB großes Bild eine 72 MB große tiff-Datei).
pdcraw = subprocess.Popen(dcraw_args, stdout=None, stderr=None)
pdcraw.communicate()
Mein zweiter Unterprozess ruft ein Matlab-Skript auf, das die Tiff-Datei verarbeitet und die entsprechenden Dateien und Bilder ausgibt. Dieser Aufruf dauert normalerweise gut 15-20 Sekunden, wenn ich das Skript selbst ausführe.
result = subprocess.Popen(matlab_args, stdout=None, stderr=None)
result.communicate()
Mein Problem: Bei beiden dieser Unterprozessaufrufe muss ich die Ansicht manuell neu laden, damit sie tatsächlich ausgeführt werden. Der Rest des Codes "um" sie läuft gut. Haben Sie eine Idee, wie ich dies vermeiden kann? Ich frage mich, ob es eine Art von Cache-Problem ist, da ich in der Lage gewesen bin, den ersten Subprozess ein paar Mal laufen zu lassen, bevor er ein Neuladen erfordert. Ich bin Ihnen für Ihre Hilfe sehr dankbar! Ich danke Ihnen im Voraus.
Dinge, die ich ausprobiert habe:
- Einfügen
time.sleep
um die Teilprozesse herum, weil ich denke, dass es vielleicht zu kurz ist. Funktioniert aber nicht. - Verwendung von Rohren anstelle von
None
pourstdout
. Ich denke, ich sollte dieNone
da ich die Ergebnisse des Befehls nicht lesen muss (sie geben nur Bilder in ein in den Args angegebenes Verzeichnis aus). - Er verflucht sie. Noch in Arbeit.