Bagaimana cara menghentikan / menghentikan skrip python agar tidak berjalan?

106

Saya menulis program di IDLE untuk membuat tokenize file teks dan program itu mulai membuat tokeniza 349 file teks! Bagaimana saya bisa menghentikannya? Bagaimana cara menghentikan program Python yang sedang berjalan?

MACEE
sumber
5
ctrl+charus membunuhnya. Atau, kill -9itu
xbonez
1
Banyak jawaban di sini khusus untuk platform. Cari platform Anda (Windows, Linux, Mac, sesuatu yang lain?)
tripleee

Jawaban:

60

Untuk menghentikan program Anda, cukup tekan Control + C.

Kristen
sumber
26
Metode ini berfungsi pada laptop windows saya, tetapi di desktop linux saya, itu ditunjukkan ^Cdi terminal dan monitor sistem menunjukkan python masih menggunakan banyak CPU ...
user3768495
Apakah mungkin untuk melanjutkan skrip setelah menghentikannya?
Gathide
10
@Gathide Jika Anda ingin menghentikan proses dan meletakkannya di latar belakang, tekan Ctrl + Z(setidaknya di Linux). Kemudian, jika Anda ingin membunuhnya, jalankan di kill %nmana "n" adalah nomor yang Anda dapatkan di sebelah "Berhenti" saat Anda menekan Ctrl + Z. Jika Anda ingin melanjutkannya, jalankan fg.
cluxter
1
Tidak bekerja jika Anda memiliki klausa umum kecuali: dalam program. Kecuali: menangkap interupsi, melakukan sesuatu (atau tidak), dan kemudian program berlanjut dengan riang.
DragonLord
@DragonLord Umum Anda kecuali harus memiliki khusus kecuali untuk kesalahan yang ditimbulkan oleh Ctrl + C. Bagaimanapun, pengecualian umum biasanya tidak disarankan.
Pere
127

Anda juga dapat melakukannya jika Anda menggunakan exit()fungsi dalam kode Anda. Idealnya, Anda bisa melakukannya sys.exit(). sys.exit()yang mungkin menghentikan Python bahkan jika Anda menjalankan sesuatu secara paralel melalui multiprocessingpaket.

Catatan: Untuk menggunakan sys.exit(), Anda harus mengimpornya:import sys

Amir
sumber
8
Catatan: Saya dapat menemukan contoh yang sys.exit(1)tidak menghentikan prosesnya. Saya pada dasarnya memiliki beberapa utas dan masing-masing dari mereka memblokir proses eksternal yang dimulai oleh Popen. Saya membutuhkan opsi nuklir untuk membunuh semua sub-proses yang dibuat oleh proses Python serta proses Python itu sendiri. Tidak ditemukan sejauh ini.
Dici
sys.exit () tidak mematikan proses tetapi memunculkan Pengecualian SystemExit yang tidak menghentikan eksekusi dengan menutup programm
c24b
39

Jika program Anda berjalan pada konsol interaktif, menekan CTRL+ Cakan memunculkan KeyboardInterruptpengecualian pada utas utama.

Jika program Python Anda tidak menangkapnya, program tersebut KeyboardInterruptakan menyebabkan Python keluar. Namun, except KeyboardInterrupt:blok, atau sesuatu seperti telanjang except:, akan mencegah mekanisme ini benar-benar menghentikan skrip agar tidak berjalan.

Terkadang jika KeyboardInterrupttidak berfungsi, Anda dapat mengirim SIGBREAKsinyal sebagai gantinya; di Windows, CTRL+ Pause/Breakdapat ditangani oleh penerjemah tanpa membuat KeyboardInterruptpengecualian yang dapat ditangkap .

Namun, mekanisme ini terutama hanya berfungsi jika interpreter Python sedang berjalan dan merespons peristiwa sistem operasi. Jika interpreter Python tidak merespons karena alasan tertentu, cara paling efektif adalah menghentikan seluruh proses sistem operasi yang menjalankan interpreter. Mekanisme untuk ini bervariasi menurut sistem operasi.

Di lingkungan shell gaya Unix, Anda dapat menekan CTRL+ Zuntuk menangguhkan proses apa pun yang saat ini mengontrol konsol. Setelah Anda mendapatkan prompt shell kembali, Anda dapat menggunakan jobsuntuk membuat daftar pekerjaan yang ditangguhkan, dan Anda dapat menghentikan pekerjaan yang ditangguhkan pertama dengan kill %1. (Jika Anda ingin menjalankannya kembali, Anda dapat melanjutkan pekerjaan di latar depan dengan menggunakan fg %1; baca manual shell Anda tentang kontrol pekerjaan untuk informasi lebih lanjut.)

Alternatifnya, di lingkungan Unix atau Unix-like, Anda dapat menemukan PID proses Python (pengidentifikasi proses) dan mematikannya dengan PID. Gunakan sesuatu seperti ps aux | grep pythonuntuk menemukan proses Python mana yang sedang berjalan, dan kemudian gunakan kill <pid>untuk mengirim SIGTERMsinyal.

The killperintah pada Unix mengirim SIGTERMsecara default, dan program Python dapat menginstal penangan sinyal untuk SIGTERMmenggunakan signalmodul. Secara teori, penangan sinyal apa pun untuk SIGTERMharus menghentikan proses dengan baik. Tetapi terkadang jika prosesnya macet (misalnya, diblokir dalam kondisi tidur IO yang tidak terputus), SIGTERMsinyal tidak berpengaruh karena proses tersebut bahkan tidak dapat bangun untuk menanganinya.

Untuk secara paksa mematikan proses yang tidak merespons sinyal, Anda perlu mengirim SIGKILLsinyal, kadang-kadang disebut kill -9karena 9adalah nilai numerik dari SIGKILLkonstanta. Dari baris perintah, Anda dapat menggunakan kill -KILL <pid>(atau kill -9 <pid>singkatnya) untuk mengirim SIGKILLdan menghentikan proses yang segera berjalan.

Di Windows, Anda tidak memiliki sistem sinyal proses Unix, tetapi Anda dapat secara paksa menghentikan proses yang sedang berjalan dengan menggunakan TerminateProcessfungsi tersebut. Secara interaktif, cara termudah untuk melakukannya adalah dengan membuka Pengelola Tugas, temukan python.exeproses yang sesuai dengan program Anda, dan klik tombol "Akhiri Proses". Anda juga dapat menggunakan taskkillperintah untuk tujuan serupa.

Daniel Pryden
sumber
34
  • Untuk menghentikan skrip python cukup tekan Ctrl + C.
  • Di dalam skrip dengan exit(), Anda bisa melakukannya.
  • Anda dapat melakukannya dalam skrip interaktif hanya dengan keluar.
  • Anda bisa menggunakan pkill -f name-of-the-python-script.
wpp
sumber
1
Opsi terakhir sangat berguna ketika Anda menjalankan skrip dalam mode terpisah, misalnyapython script.py&
richar8086
26

Ctrl-Break itu lebih kuat dari Ctrl-C

Scott P.
sumber
4
Seperti yang dijelaskan Daniel Pryden dalam jawabannya, tombol Break di keyboard juga bisa diberi label Jeda, bagi yang bingung seperti saya. :)
JakeStrang
26

Untuk menghentikan program yang sedang berjalan, gunakan Ctrl+ Cuntuk menghentikan proses.

Untuk menanganinya secara terprogram dalam python, impor sysmodul dan gunakan di sys.exit()mana Anda ingin menghentikan program.

import sys
sys.exit()
Chandella07
sumber
19

Untuk menghentikan skrip python menggunakan keyboard: Ctrl+C

Untuk menghentikannya menggunakan kode (Ini telah berhasil untuk saya di Python 3):

import os
os._exit(0)

Anda juga bisa menggunakan:

import sys
sys.exit()

atau:

exit()

atau:

raise SystemExit
Firzok Nadeem
sumber
4

Ctrl + Z harus melakukannya, jika Anda terjebak di shell python. Perlu diingat bahwa skrip dapat terus berjalan di latar belakang, jadi di bawah linux Anda harus menghentikan proses yang sesuai.

Juke
sumber
ini berguna saat menjalankan (banyak) proses paralel dan CTRL-C tidak akan mematikan semuanya. Setelah CTRL-Z, Anda dapat memeriksa jobsatau pske kill 8923754jobid / id proses apa pun yang perlu Anda bunuh
Paul
3

Ketika saya memiliki skrip python yang berjalan di terminal linux, CTRL + \ berfungsi. (bukan CRTL + C atau D)

Stefun06
sumber
3

Control+ Dbekerja untuk saya di Windows 10. Selain itu, meletakkan exit()di bagian akhir juga berfungsi.

catur_lover_6
sumber
3

exit () akan mematikan Kernel jika Anda menggunakan Notebook Jupyter, jadi itu bukan ide yang baik. raiseperintah akan menghentikan program.

Chadee Fouad
sumber
2

Anda juga dapat menggunakan Activity Monitoruntuk menghentikan proses py

Dennis
sumber
1

Untuk menghentikan program Anda, cukup tekan CTRL+D

atau exit().

Vivek Parmar
sumber
0

Tekan Ctrl+ Alt+ Deletedan Task Manager akan muncul. Temukan perintah Python yang sedang berjalan, klik kanan padanya dan dan klik Stop atau Kill.

Andrew Hyder
sumber
0

Jika Anda bekerja dengan Spyder, gunakan CTRL +. (DOT) dan Anda akan merestart kernel, juga Anda akan menghentikan program.

l1den
sumber
0

Solusi Windows: Control + C.

Solusi Macbook: Control (^) + C.

Cara lain adalah dengan membuka terminal, ketik top, tulis PIDproses yang ingin Anda matikan lalu ketik di terminal:kill -9 <pid>

seralouk
sumber