Tôi đang giao tiếp một tập lệnh MATLAB nhỏ với Python thông qua mô-đun subprocess
. Như sau:Python Không đợi MATLAB kết thúc
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?"
Nhưng "DONE" đang được in ngay cả trước khi MATLAB bắt đầu! Toàn bộ mã của tôi qua nó đang phá vỡ vì điều này.
Tôi đã thử:
- Sử dụng os.system() gọi (Đây là nơi tôi bắt đầu, nhưng tôi đọc về SO mà bị phản đối của nó)
- Sử dụng
p.wait()
vàsubprocess.Popen.wait
. Cả hai đều không hoạt động. - Sử dụng tạm dừng thủ công 3 phút (Thời gian tối đa MATLAB cần hoàn thành trung bình) Siêu Sloppy.
Tôi đang thiếu gì?
Tôi đã có một điều tương tự xảy ra trong trang ASP.NET MVC của tôi khi cố gắng gọi MATLAB. Bạn đang chạy bất kỳ chức năng cụ thể trong MATLAB, hoặc bạn chỉ muốn bật nó? – IronMan84
@ IronMan84 Tôi không thể nhận được một mã toán học trong NumPy vì vậy tôi đang xuất các ma trận của mình sang tệp csv, đọc nó trong MATLAB, tính toán và xuất câu trả lời cho tệp csv và đọc nó trong Python. –
Điều gì sẽ xảy ra nếu bạn xóa dấu ngoặc đơn? – mgilson