Łączę mały skrypt MATLAB z Pythonem za pomocą modułu subprocess
. W następujący sposób:Python nie czeka na zakończenie MATLABA
cmd='(matlab -nosplash -nodesktop -r "optimizer;quit;")'
p = subprocess.Popen(cmd,stdin=None,stdout=None,shell=True)
#subprocess.Popen.wait(p)
#p.wait()
print "DONE?"
Ale "DONE" jest drukowane jeszcze przed rozpoczęciem MATLAB! Cały mój kod, który przeszedł, zrywa się z tego powodu.
Próbowałem:
- Korzystanie os.system() zwraca (To gdzie zacząłem, ale czytałem na SO, że jego przestarzałe)
- Korzystanie
p.wait()
isubprocess.Popen.wait
. Oba nie działają. - Korzystanie z pauzy ręcznej trwającej 3 minuty (Maksymalny czas pracy MATLAB kończy się średnio) Super Sloppy.
Czego mi brakuje?
Miałem podobną rzecz na stronie ASP.NET MVC podczas próby wywołania MATLAB. Czy korzystasz z jakiejś określonej funkcji w MATLAB, czy po prostu chcesz ją włączyć? – IronMan84
@ IronMan84 Nie mogę uzyskać kodu matematycznego działającego w NumPy, więc eksportuję moje macierze do pliku csv, odczytuję go w MATLAB, obliczam i eksportuję odpowiedź do pliku csv i odczytywam z powrotem w Pythonie. –
Co się stanie, jeśli usuniesz nawias? – mgilson