kzen.dev
  • Pertanyaan
  • Tag
  • Pengguna
Notifikasi
Imbalan
Registrasi
Setelah Anda mendaftar, Anda akan diberitahu tentang balasan dan komentar untuk pertanyaan Anda.
Gabung
Jika Anda sudah memiliki akun, masuk untuk memeriksa pemberitahuan baru.
Akan ada hadiah untuk pertanyaan, jawaban, dan komentar tambahan.
Lebih
Sumber
Sunting
 ahura
ahura
Question

Apakah ada cara untuk memeriksa apakah subproses masih berjalan?

Saya meluncurkan sejumlah subproses dengan subprocess.Popen di Python. Saya ingin memeriksa apakah salah satu proses tersebut telah selesai. Saya telah menemukan dua cara untuk memeriksa status subproses, tetapi keduanya tampaknya memaksa proses untuk menyelesaikannya. Salah satunya adalah menggunakan process.communicate() dan mencetak returncode, seperti yang dijelaskan di sini. Cara lainnya adalah dengan memanggil process.wait() dan memeriksa bahwa hasilnya 0.

Apakah ada cara untuk memeriksa apakah sebuah proses masih berjalan tanpa menunggu proses tersebut selesai jika memang selesai?

32 2017-04-07T09:25:49+00:00 3
 Community
Community
Pertanyaan edit 23 Mei 2017 в 11:54
Pemrograman
python
subprocess
Solution / Answer
 stovfl
stovfl
7 April 2017 в 11:05
2017-04-07T11:05:29+00:00
Lebih
Sumber
Sunting
#33213552

Pertanyaan: ... cara untuk memeriksa apakah suatu proses masih berjalan ...

Anda dapat melakukannya misalnya:

p = subprocess.Popen(...
"""
A None value indicates that the process hasn't terminated yet.
"""
poll = p.poll()
if poll == None:
  # p.subprocess is alive

Python » 3.6.1 Documentation popen-objects

Diuji dengan Python:3.4.2

 stovfl
stovfl
Jawaban edit 7 April 2017 в 1:14
43
0
Kecerdasan buatan untuk mengurai produk dari halaman mana pun
productapi.dev
 99Sono
99Sono
20 Juli 2017 в 8:08
2017-07-20T08:08:28+00:00
Lebih
Sumber
Sunting
#33213553

Melakukan

myProcessIsRunning = poll() is None 

Seperti yang disarankan oleh jawaban utama, adalah cara yang disarankan dan cara paling sederhana untuk memeriksa apakah suatu proses berjalan. (dan ini juga berfungsi di jython)

Jika Anda tidak memiliki instance proses untuk memeriksanya. Kemudian gunakan proses TaskList / Ps sistem operasi.

Di windows, perintah saya akan terlihat sebagai berikut:

filterByPid = "PID eq %s" % pid
        pidStr = str(pid)
        commandArguments = ['cmd', '/c', "tasklist", "/FI", filterByPid, "|", "findstr",  pidStr ]

Ini pada dasarnya melakukan hal yang sama seperti baris perintah berikut:

cmd /c "tasklist /FI "PID eq 55588" | findstr 55588"

Dan pada linux, saya melakukan hal yang persis sama menggunakan perintah:

pidStr = str(pid)
commandArguments = ['ps', '-p', pidStr ]

Perintah ps sudah akan mengembalikan kode error 0 / 1 tergantung apakah prosesnya ditemukan. Sedangkan pada windows anda membutuhkan perintah find string.

Ini adalah pendekatan yang sama yang dibahas pada thread stack overflow berikut:

https://stackoverflow.com/questions/21460775/verify-if-a-process-is-running-using-its-pid-in-java

CATATAN: Jika Anda menggunakan pendekatan ini, ingatlah untuk membungkus panggilan perintah Anda dalam coba: foundRunningProcess = subproses.check_output(argumentsArray, **kwargs) kembali Benar kecuali Exception sebagai err: return False

Catatan, berhati-hatilah jika Anda mengembangkan dengan VS Code dan menggunakan Python dan Jython murni. Di lingkungan saya, saya berada di bawah ilusi bahwa metode poll() tidak berfungsi karena proses yang saya duga pasti sudah berakhir memang berjalan. Proses ini telah meluncurkan Wildfly. Dan setelah saya meminta wildfly untuk berhenti, shell masih menunggu pengguna untuk "Press any key to continue . . ".

Untuk menyelesaikan proses ini, dalam python murni, kode berikut ini bekerja:

process.stdin.write(os.linesep)

Pada jython, saya harus memperbaiki kode ini agar terlihat sebagai berikut:

print >>process.stdin, os.linesep

Dan dengan perbedaan ini prosesnya memang selesai. Dan jython.poll() mulai memberitahu saya bahwa prosesnya memang sudah selesai.

 99Sono
99Sono
Jawaban edit 20 Juli 2017 в 9:04
3
0
Kecerdasan buatan untuk mengurai produk dari halaman mana pun
productapi.dev
 nocturnal_beast
nocturnal_beast
7 April 2017 в 9:37
2017-04-07T09:37:15+00:00
Lebih
Sumber
Sunting
#33213551

Anda bisa menggunakan subprocess.check_output untuk melihat output Anda.

Coba kode ini:

import subprocess
subprocess.check_output(['your command here'], shell=True, stderr=subprocess.STDOUT)

Semoga ini membantu!

0
0
Related communities 6
Python Indonesia
Python Indonesia
25 704 pengguna
Programmer Python Indonesia. Group ini dikelola oleh sejumlah admin. Baca pesan tersemat / pinned message: https://t.me/pythonID/217588
Buka telegram
Indonesian Python Warriors
Indonesian Python Warriors
1 492 pengguna
Di grup ini tidak ada kewajiban untuk menggunakan username dan foto. Yang tidak boleh adalah spamming. Gak boleh baper, kalau nanya yang bener, eror jangan difoto pake HP, gunakan screenshot, code copas ke dpaste.org lalu share link ke sini.
Buka telegram
Python-ID Jogja
Python-ID Jogja
946 pengguna
Buka telegram
Python Newbie Indonesia
Python Newbie Indonesia
449 pengguna
Peraturan grup Python Newbie 🌻Dilarang spam 🌻Dilarang menggunakan bahasa kasar 🌻Dilarang beriklan di grup tanpa seizin admin Beberapa video dasar python dapat diliat melalui channel youtube juan aditya Jangan lupa untuk subscribe ya🙏
Buka telegram
BASIC PYTHON INDONESIA
BASIC PYTHON INDONESIA
368 pengguna
Buka telegram
PythonWealth Indonesia 🇮🇩
PythonWealth Indonesia 🇮🇩
15 pengguna
Buka telegram
Tambahkan pertanyaan
Kategori
Semua
Teknologi
Budaya / Rekreasi
Kehidupan / Seni
Ilmu Pengetahuan
Profesional
Bisnis
Pengguna
Semua
Baru
Populer
1
Анна Литвиненко
Terdaftar 1 hari yang lalu
2
Inessa bu
Terdaftar 1 bulan yang lalu
3
Denis Babushkin
Terdaftar 1 bulan yang lalu
4
asakuno asakuno
Terdaftar 1 bulan yang lalu
5
aldo salerno
Terdaftar 1 bulan yang lalu
Kecerdasan buatan untuk mengurai produk dari halaman mana pun
productapi.dev
ID
JA
© kzen.dev 2023
Sumber
stackoverflow.com
di bawah lisensi cc by-sa 3.0 dengan atribusi