Tôi đã viết một chương trình trong IDLE để mã hóa các tệp văn bản và nó bắt đầu mã hóa tệp văn bản 349! Làm thế nào tôi có thể ngăn chặn nó? Làm cách nào để dừng một chương trình Python đang chạy?
Tôi đã viết một chương trình trong IDLE để mã hóa các tệp văn bản và nó bắt đầu mã hóa tệp văn bản 349! Làm thế nào tôi có thể ngăn chặn nó? Làm cách nào để dừng một chương trình Python đang chạy?
Câu trả lời:
Để dừng chương trình của bạn, chỉ cần nhấn Control + C.
^C
tại nhà ga và trăn màn hình hệ thống cho thấy vẫn còn sử dụng rất nhiều CPU ...
Ctrl + Z
(ít nhất là trên Linux). Sau đó, nếu bạn muốn giết nó, hãy chạy kill %n
trong đó "n" là số bạn nhận được bên cạnh "Đã dừng" khi bạn nhấn Ctrl + Z
. Nếu bạn muốn tiếp tục nó, hãy chạy fg
.
Bạn cũng có thể làm điều đó nếu bạn sử dụng exit()
hàm trong mã của mình. Lý tưởng hơn là bạn có thể làm được sys.exit()
. sys.exit()
điều này có thể chấm dứt Python ngay cả khi bạn đang chạy mọi thứ song song thông qua multiprocessing
gói.
Lưu ý: Để sử dụng sys.exit()
, bạn phải nhập nó:import sys
sys.exit(1)
không dừng quá trình. Về cơ bản, tôi có nhiều luồng và mỗi luồng chặn trên các quy trình bên ngoài được bắt đầu bởi Popen
. Tôi cần một tùy chọn hạt nhân để giết tất cả các quy trình con được tạo bởi quy trình Python cũng như chính quy trình Python. Không tìm thấy cho đến nay.
Nếu chương trình của bạn đang chạy trên bảng điều khiển tương tác, nhấn CTRL+ Csẽ tạo ra một KeyboardInterrupt
ngoại lệ trên chuỗi chính.
Nếu chương trình Python của bạn không bắt được nó, điều KeyboardInterrupt
này sẽ khiến Python thoát ra. Tuy nhiên, một except KeyboardInterrupt:
khối, hoặc một cái gì đó giống như một khối trống except:
, sẽ ngăn cơ chế này thực sự ngăn tập lệnh chạy.
Đôi khi nếu KeyboardInterrupt
không hoạt động, bạn có thể gửi SIGBREAK
tín hiệu thay thế; trên Windows, CTRL+ Pause/Breakcó thể được trình thông dịch xử lý mà không tạo ra KeyboardInterrupt
ngoại lệ có thể bắt được.
Tuy nhiên, các cơ chế này chủ yếu chỉ hoạt động nếu trình thông dịch Python đang chạy và phản hồi các sự kiện của hệ điều hành. Nếu trình thông dịch Python không phản hồi vì lý do nào đó, cách hiệu quả nhất là chấm dứt toàn bộ quy trình hệ điều hành đang chạy trình thông dịch. Cơ chế cho việc này khác nhau tùy theo hệ điều hành.
Trong môi trường shell kiểu Unix, bạn có thể nhấn CTRL+ Zđể tạm dừng bất kỳ quá trình nào hiện đang điều khiển bảng điều khiển. Khi bạn nhận được lời nhắc trình bao trở lại, bạn có thể sử dụng jobs
để liệt kê các công việc bị tạm ngừng và bạn có thể loại bỏ công việc bị tạm ngừng đầu tiên với kill %1
. (Nếu bạn muốn bắt đầu chạy lại, bạn có thể tiếp tục công việc ở nền trước bằng cách sử dụng fg %1
; đọc hướng dẫn sử dụng shell của bạn về điều khiển công việc để biết thêm thông tin.)
Ngoài ra, trong môi trường giống Unix hoặc Unix, bạn có thể tìm thấy PID (mã định danh quy trình) của quy trình Python và loại bỏ nó bằng PID. Sử dụng một cái gì đó như ps aux | grep python
để tìm các quy trình Python nào đang chạy, sau đó sử dụng kill <pid>
để gửi SIGTERM
tín hiệu.
Các kill
lệnh trên Unix gửi SIGTERM
theo mặc định, và một chương trình Python có thể cài đặt một handler tín hiệu cho SIGTERM
việc sử dụng signal
mô-đun. Về lý thuyết, bất kỳ trình xử lý tín hiệu nào cho SIGTERM
nên tắt quá trình một cách duyên dáng. Nhưng đôi khi nếu quy trình bị kẹt (ví dụ: bị chặn ở trạng thái ngủ IO không ngừng), một SIGTERM
tín hiệu sẽ không có tác dụng vì quy trình thậm chí không thể thức dậy để xử lý.
Để giết một quá trình không phản hồi tín hiệu, bạn cần gửi SIGKILL
tín hiệu, đôi khi được gọi là kill -9
vì 9
là giá trị số của SIGKILL
hằng số. Từ dòng lệnh, bạn có thể sử dụng kill -KILL <pid>
(hoặc kill -9 <pid>
viết tắt) để gửi SIGKILL
và dừng quá trình đang chạy ngay lập tức.
Trên Windows, bạn không có hệ thống Unix của các tín hiệu quy trình, nhưng bạn có thể buộc phải chấm dứt một quy trình đang chạy bằng cách sử dụng TerminateProcess
hàm. Về mặt tương tác, cách dễ nhất để làm điều này là mở Trình quản lý tác vụ, tìm python.exe
quy trình tương ứng với chương trình của bạn và nhấp vào nút "Kết thúc quy trình". Bạn cũng có thể sử dụng taskkill
lệnh cho các mục đích tương tự.
Ctrl + C
.exit()
, bạn có thể làm điều đó.pkill -f name-of-the-python-script
.python script.py&
Ctrl-Break nó mạnh hơn Ctrl-C
Để dừng một chương trình đang chạy, hãy sử dụng Ctrl+ Cđể kết thúc quá trình.
Để xử lý nó theo chương trình trong python, hãy nhập sys
mô-đun và sử dụng sys.exit()
ở nơi bạn muốn kết thúc chương trình.
import sys
sys.exit()
Để dừng tập lệnh python bằng bàn phím: Ctrl
+C
Để dừng nó bằng cách sử dụng mã (Điều này đã hoạt động với tôi trên Python 3):
import os
os._exit(0)
bạn cũng có thể dùng:
import sys
sys.exit()
hoặc là:
exit()
hoặc là:
raise SystemExit
Ctrl + Z nên làm điều đó, nếu bạn bị kẹt trong trình bao python. Hãy nhớ rằng các phiên bản của tập lệnh có thể tiếp tục chạy ở chế độ nền, vì vậy trong linux, bạn phải hủy quá trình tương ứng.
jobs
hoặc ps
để sau đó kill 8923754
hoặc bất cứ điều gì jobid / quá trình id bạn cần phải giết
Control+ Dhoạt động đối với tôi trên Windows 10. Ngoài ra, đặt exit()
ở cuối cũng hoạt động.
exit () sẽ giết Kernel nếu bạn đang ở trong Jupyter Notebook nên không phải là ý kiến hay. raise
lệnh sẽ dừng chương trình.
Để dừng chương trình của bạn, chỉ cần nhấn CTRL+D
hoặc exit()
.
Nhấn Ctrl+ Alt+ Deletevà Trình quản lý tác vụ sẽ bật lên. Tìm lệnh Python đang chạy, nhấp chuột phải vào nó và nhấp vào Stop hoặc Kill.
ctrl+c
nên giết nó. Ngoài ra,kill -9
nó