Bagaimana cara seseorang mematahkan eksekusi proses yang sudah berjalan lama di konsol python ArcMap?
Misalnya, bagaimana Anda mematahkan iterasi yang panjang seperti yang di bawah ini setelah dimulai?
for i in range(1, 50):
# some long process which takes over a minute to complete
Saya ingin menghentikan proses kapan saja saya mau dengan menekan kombinasi keyboard, mengklik tombol atau sesuatu yang serupa ketika kode yang saya input di jendela konsol sedang berjalan .
arcpy
arcmap
python-window
Alex Essilfie
sumber
sumber
Jawaban:
Hanya mengujinya dan ESC tidak berhasil. ArcGIS membeku sesaat dan kemudian melanjutkan. Sepertinya tidak ada cara untuk melakukan paksa berhenti setelah dijalankan di konsol ArcGIS Python. Anda tidak dapat membunuhnya menggunakan Task Manager karena proses Python tidak muncul di sana.
Jika Anda benar-benar ingin dapat menghentikannya secara paksa, Anda mungkin ingin mempertimbangkan untuk menggunakan IDE seperti IDLE daripada melakukannya di konsol ArcGIS Python. Di IDLE misalnya, Anda dapat menggunakan Ctrl+ Zatau Ctrl+ Cuntuk mengakhiri eksekusi.
sumber
Ini adalah metode yang saya gunakan:
contoh file kill_processx.py:
sumber
Ini adalah praktik yang buruk untuk memaksa shutdown menggunakan taktik brute force. Sebaliknya, seperti yang ditunjukkan @Aragon, Anda harus menambahkan penanganan kesalahan pada skrip Anda untuk mengisolasi komponen dan / atau menghentikan skrip jika kondisi tertentu tidak terpenuhi. Seperti yang ditunjukkan oleh @RK, konsol python ArcGIS berada di samping tidak berharga untuk menjalankan skrip yang kompleks dan, dalam praktiknya, harus disediakan untuk operasi sederhana - tetap dengan IDLE , pythonwin , pyscripter atau sejumlah host IDE lainnya. Berikut adalah diskusi yang terkait dengan pertanyaan Anda:
Bagaimana cara menggunakan sys.exit (0) dalam skrip arcpy untuk keluar lebih awal tanpa menampilkan pesan kesalahan?
Mengakhiri skrip Python
Bagaimana cara menghentikan perintah atau prompt dengan Python?
sumber
Saya bekerja di 10.4, dan saya telah menemukan bahwa saya dapat mengklik tutup X saat skrip sedang berjalan. ArcMap akan bertanya apakah saya ingin membatalkan operasi.
Saya klik Ya. ArcMap kemudian bertanya kepada saya apakah saya ingin menyimpan sebelum keluar. Saya klik Batal. Skrip melempar interupsi keyboard.
sumber
jika Anda ingin menyelesaikan dengan cara pythonic, coba ini:
atau gunakan:
secara terperinci:
Saya harap ini membantu Anda ...
sumber
sys.exit()
tetapi itu tidak berhasil ketika loop atau proses yang sama panjangnya berjalan.Paling tidak di ArcMap 10.4, Anda bisa melakukan ini. Pastikan jendela "Hasil" terlihat. (Jika tidak menemukannya di "Geoprocessing"). Sekarang jika Anda memiliki perintah yang sedang berjalan itu akan muncul di jendela ini. Klik kanan padanya dan tekan "batal".
sumber
Bagaimana jika di bawah setiap baris kode Anda menambahkan sebuah
if
cekif input()=="what ever you want in here"
yang menggunakansys.exit
.Misalnya: https://repl.it/@kquazi_tcsp/JumpyNaturalMetadata
sumber
Menggunakan IDLE, saya memiliki file bernama "stop.py" yang berisi baris tunggal: "pass". Biarkan file ini terbuka di IDLE saat skrip .py lain berjalan. Mengklik F5 di jendela "stop.py" me-reset IDLE.
sumber