Apa perbedaan antara subprocess.Popen()
dan os.system()
?
python
subprocess
system
Arovit
sumber
sumber
sts = p.wait()
sebagai pengganti baris terakhir.shell=True
jika Anda bisa. Memiliki opsi ini adalah salah satu manfaatsubprocess.Popen()
dan fungsi penolongnya.os.system
dansubprocess.call/popen/run
memblokir / menunggu perintah selesai: stackoverflow.com/a/14059648/4752883subprocess.Popen()
adalah kumpulan super ketatos.system()
.sumber
os.system
setara dengansystem
perintah Unix , sedangkansubprocess
modul pembantu dibuat untuk menyediakan banyak fasilitas yang disediakan olehPopen
perintah dengan antarmuka yang lebih mudah dan dapat dikontrol. Itu dirancang mirip dengan perintah Unix Popen .Sedangkan:
Jika Anda berpikir mana yang akan digunakan, gunakan
subprocess
pasti karena Anda memiliki semua fasilitas untuk eksekusi, ditambah kontrol tambahan atas prosesnya.sumber
Subproses didasarkan pada popen2, dan dengan demikian memiliki sejumlah keunggulan - ada daftar lengkap di PEP di sini , tetapi beberapa di antaranya:
sumber
Saat menjalankan python (cpython) di windows,
<built-in function system>
os.system akan dijalankan di bawah tirai _wsystem sementara jika Anda menggunakan os non-windows, itu akan menggunakan sistem .Sebaliknya, Popen harus menggunakan CreateProcess di windows dan _posixsubprocess.fork_exec dalam sistem operasi berbasis posix .
Yang mengatakan, saran penting berasal dari dokumen os.system , yang mengatakan:
sumber