Bir python betiğinin çalışması nasıl durdurulur / sonlandırılır?


105

Metin dosyalarını belirtmek için IDLE'de bir program yazdım ve 349 metin dosyalarını tokeniza etmeye başladı! Nasıl durdurabilirim? Çalışan bir Python programını nasıl durdurabilirim?


5
ctrl+conu öldürmeli. Alternatif olarak, kill -9o
xbonez

1
Buradaki birçok cevap platforma özeldir. Platformunuzu arayın (Windows, Linux, Mac, başka bir şey mi?)
tripleee

Yanıtlar:


60

Programınızı durdurmak için Control + tuşuna basmanız yeterlidir C.


24
Bu yöntem Windows dizüstü bilgisayarımda işe yaradı, ancak Linux masaüstümde ^Cterminalde gösterildi ve sistem monitörü
python'un

Komut dosyasını durdurduktan sonra devam ettirmek mümkün mü?
Gathide

10
@Gathide İşlemi duraklatmak ve arka plana koymak istiyorsanız, tuşuna basın Ctrl + Z(en azından Linux'ta). Daha sonra, onu öldürmek istiyorsanız, kill %ntuşuna bastığınızda "Durduruldu" nun yanındaki sayı olan "n" nin olduğu yere koşun Ctrl + Z. Devam etmek istiyorsanız, koşun fg.
cluxter

Programda bir genel kuralınız varsa çalışmaz: cümle. Dış: kesmeyi yakalar, bir şey yapar (veya yapmaz) ve sonra program neşeyle devam eder.
DragonLord

119

exit()Kodunuzdaki işlevi kullanırsanız da yapabilirsiniz . Daha ideal olarak yapabilirsiniz sys.exit(). sys.exit()hangi olabilir Eğer aracılığıyla paralel şeyler çalışan bile Python sonlandırmak multiprocessingpakette.

Not: öğesini kullanmak için sys.exit()içeri aktarmanız gerekir:import sys


8
Not: sys.exit(1)Süreci durdurmayan örnekler bulabilirim . Temelde birden fazla iş parçacığım var ve bunların her biri tarafından başlatılan harici işlemlerde bloklanıyor Popen. Python süreci tarafından oluşturulan tüm alt süreçleri ve Python sürecinin kendisini öldürmek için bir nükleer seçeneğe ihtiyacım var. Şimdiye kadar bulamadık.
Dici

sys.exit () işlemi sonlandırmaz, ancak programı kapatarak yürütmeyi durdurmayan
SystemExit

37

Programınız etkileşimli bir konsolda çalışıyorsa, CTRL+ tuşuna basmak ana iş parçacığında Cbir KeyboardInterruptistisna oluşturacaktır.

Python programınız onu yakalamazsa, KeyboardInterruptPython'un çıkmasına neden olur. Bununla birlikte, bir except KeyboardInterrupt:blok veya çıplak gibi bir şey except:, bu mekanizmanın betiğin çalışmasını gerçekten durdurmasını engelleyecektir.

Bazen KeyboardInterruptçalışmıyorsa SIGBREAKbunun yerine bir sinyal gönderebilirsiniz ; Windows'ta CTRL+ Pause/Break, yakalanabilir bir KeyboardInterruptistisna oluşturmadan yorumlayıcı tarafından işlenebilir .

Bununla birlikte, bu mekanizmalar esas olarak yalnızca Python yorumlayıcısı çalışıyorsa ve işletim sistemi olaylarına yanıt veriyorsa çalışır. Python yorumlayıcısı herhangi bir nedenle yanıt vermiyorsa, en etkili yol, yorumlayıcıyı çalıştıran tüm işletim sistemi sürecini sonlandırmaktır. Bunun mekanizması işletim sistemine göre değişir.

Unix tarzı kabuk ortamında, basabilirsiniz CTRL+ Ziçin askıya şu anda konsolu kontrol ne olursa olsun süreç. Kabuk istemini geri aldığınızda, jobsaskıya alınmış işleri listelemek için düğmesini kullanabilir ve ilk askıya alınan işi ile sonlandırabilirsiniz kill %1. (Tekrar çalıştırmaya başlamak isterseniz, kullanarak ön planda işe devam edebilirsiniz fg %1; daha fazla bilgi için kabuğunuzun iş kontrolü kılavuzunu okuyun.)

Alternatif olarak, Unix veya Unix benzeri bir ortamda, Python işleminin PID'sini (işlem tanımlayıcısı) bulabilir ve PID ile öldürebilirsiniz. ps aux | grep pythonHangi Python işlemlerinin çalıştığını bulmak gibi bir şey kullanın ve ardından kill <pid>bir SIGTERMsinyal göndermek için kullanın .

Unix'teki killkomut SIGTERMvarsayılan olarak gönderilir ve bir Python programı modülü SIGTERMkullanmak için bir sinyal işleyici kurabilir signal. Teoride, herhangi bir sinyal işleyicisi SIGTERMsüreci zarif bir şekilde kapatmalıdır. Ancak bazen süreç takılı kalırsa (örneğin, kesintisiz bir IO uyku durumunda bloke edilirse), bir SIGTERMsinyalin etkisi olmaz çünkü süreç onu idare etmek için uyanamaz bile.

Zorla sinyallere yanıt vermeyen bir süreç öldürmek için göndermek gerekir SIGKILLsinyalini bazen olarak anılacaktır kill -9çünkü 9sayısal değerdir SIGKILLsabiti. Komut satırından, a göndermek ve işlemi hemen durdurmak için kill -KILL <pid>(veya kill -9 <pid>kısaca) kullanabilirsiniz SIGKILL.

Windows'ta, Unix işlem sinyalleri sistemine sahip değilsiniz, ancak bu TerminateProcessişlevi kullanarak çalışan bir işlemi zorla sonlandırabilirsiniz . Etkileşimli olarak bunu yapmanın en kolay yolu, Görev Yöneticisi'ni açmak python.exe, programınıza karşılık gelen işlemi bulmak ve "İşlemi Sonlandır" düğmesini tıklamaktır. taskkillKomutu benzer amaçlar için de kullanabilirsiniz .


31
  • Bir python komut dosyasını durdurmak için sadece tuşuna basın Ctrl + C.
  • İle bir komut dosyası içinde exit()bunu yapabilirsiniz.
  • Bunu sadece çıkış ile etkileşimli bir komut dosyası içinde yapabilirsiniz.
  • Kullanabilirsiniz pkill -f name-of-the-python-script.

Son seçenek özellikle komut dosyasını ayrı bir modda çalıştırdığınızda kullanışlıdır, örneğinpython script.py&
richar8086

26

Ctrl-Break , Ctrl-C'den daha güçlüdür


4
Daniel Pryden'in cevabında açıkladığı gibi, klavyedeki Break tuşu benim gibi kafası karışmış olanlar için Duraklat olarak da etiketlenebilir. :)
JakeStrang

25

Çalışan bir programı durdurmak için , işlemi sonlandırmak için Ctrl+ Ckullanın.

Python'da programlı olarak işlemek için sysmodülü içe aktarın sys.exit()ve programı sonlandırmak istediğiniz yeri kullanın.

import sys
sys.exit()

17

Klavyeyi kullanarak bir python komut dosyasını durdurmak için: Ctrl+C

Kodu kullanarak durdurmak için (Bu benim için Python 3'te çalıştı):

import os
os._exit(0)

Ayrıca kullanabilirsin:

import sys
sys.exit()

veya:

exit()

veya:

raise SystemExit

4

Python kabuğuna yakalanmışsanız Ctrl + Z bunu yapmalıdır. Komut dosyası örneklerinin arka planda çalışmaya devam edebileceğini unutmayın, bu nedenle linux altında ilgili işlemi sonlandırmanız gerekir.


bu (birçok) paralel işlem çalıştırıldığında kullanışlıdır ve CTRL-C hepsini öldürmez. CTRL-Z'den sonra, kontrol edebilir jobsveya pso zaman kill 8923754ya da öldürmeniz gereken iş kimliği / işlem kimliği ne olursa olsun
Paul

3

Linux terminalinde çalışan bir python betiğim olduğunda, CTRL + \ çalışır. (CRTL + C veya D değil)


3

Control+ Dbenim için Windows 10'da çalışıyor. Ayrıca, exit()sonuna koymak da işe yarıyor.


3

exit (), Jupyter Notebook'daysanız Kernel'i öldürecektir, bu yüzden bu iyi bir fikir değildir. raisekomutu programı durduracaktır.


2

Activity Monitorpy sürecini durdurmak için de kullanabilirsiniz



0

Ctrl+ Alt+ ' DeleteYa basın ve Görev Yöneticisi açılır. Çalışan Python komutunu bulun, üzerine sağ tıklayın ve Durdur veya Öldür'e tıklayın.


0

Spyder ile çalışıyorsanız, CTRL + kullanın . (DOT) ve çekirdeği yeniden başlatacaksınız, ayrıca programı durduracaksınız.


0

Windows çözümü: Control + C.

Macbook çözümü: Control (^) + C.

Diğer bir yol, bir terminal açmak, öldürmek istediğiniz işlemi topyazmak, yazmak PIDve ardından terminale yazmaktır :kill -9 <pid>

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.