Hướng dẫn make python script run in background - làm cho tập lệnh python chạy trong nền

Trên Windows, bạn có thể sử dụng pythonw.exe để chạy tập lệnh Python làm quá trình nền:

Các tập lệnh Python (các tệp có tiện ích mở rộng .py) sẽ được thực thi bởi python.exe theo mặc định. Việc thực thi này mở một thiết bị đầu cuối, vẫn mở ngay cả khi chương trình sử dụng GUI. Nếu bạn không muốn điều này xảy ra, hãy sử dụng tiện ích mở rộng

import sched
import time

event_schedule = sched.scheduler(time.time, time.sleep)

def do_something():
    print("Hello, World!")
    event_schedule.enter(30, 1, do_something, (sc,))

event_schedule.enter(30, 1, do_something, (s,))
event_schedule.run()
0 sẽ khiến tập lệnh được thực thi bởi pythonw.exe theo mặc định (cả hai tệp thực thi được đặt ở cấp cao nhất của thư mục cài đặt Python của bạn). Điều này ngăn chặn cửa sổ đầu cuối khi khởi động.

Ví dụ,

C:\ThanosDodd\Python3.6\pythonw.exe C:\\Python\Scripts\moveDLs.py

Để làm cho tập lệnh của bạn chạy liên tục, bạn có thể sử dụng

import sched
import time

event_schedule = sched.scheduler(time.time, time.sleep)

def do_something():
    print("Hello, World!")
    event_schedule.enter(30, 1, do_something, (sc,))

event_schedule.enter(30, 1, do_something, (s,))
event_schedule.run()
2 để lập lịch sự kiện:

Mô -đun lịch trình xác định một lớp thực hiện Trình lập lịch sự kiện có mục đích chung

import sched
import time

event_schedule = sched.scheduler(time.time, time.sleep)

def do_something():
    print("Hello, World!")
    event_schedule.enter(30, 1, do_something, (sc,))

event_schedule.enter(30, 1, do_something, (s,))
event_schedule.run()

Bây giờ để tiêu diệt một quy trình nền trên Windows, bạn chỉ cần chạy:

taskkill /pid processId /f

Trong đó

import sched
import time

event_schedule = sched.scheduler(time.time, time.sleep)

def do_something():
    print("Hello, World!")
    event_schedule.enter(30, 1, do_something, (sc,))

event_schedule.enter(30, 1, do_something, (s,))
event_schedule.run()
3 là ID của quá trình bạn muốn giết.

Hướng dẫn make python script run in background - làm cho tập lệnh python chạy trong nền
Hình ảnh từ Wikimedia Commons

19 tháng 10 năm 2018

Mục lục

  • Làm cho tập lệnh python có thể thực thi
  • Bắt đầu tập lệnh Python trong nền
  • Tìm và tiêu diệt quá trình chạy
  • Bộ đệm đầu ra

Đây là một hướng dẫn nhanh về cách chạy tập lệnh Python trong nền trong Linux.

Làm cho tập lệnh python có thể thực thi

Đầu tiên, bạn cần thêm một dòng Shebang trong tập lệnh Python trông giống như sau:

Đường dẫn này là cần thiết nếu bạn có nhiều phiên bản Python được cài đặt và

import sched
import time

event_schedule = sched.scheduler(time.time, time.sleep)

def do_something():
    print("Hello, World!")
    event_schedule.enter(30, 1, do_something, (sc,))

event_schedule.enter(30, 1, do_something, (s,))
event_schedule.run()
4 sẽ đảm bảo rằng trình thông dịch Python đầu tiên trong biến môi trường
import sched
import time

event_schedule = sched.scheduler(time.time, time.sleep)

def do_something():
    print("Hello, World!")
    event_schedule.enter(30, 1, do_something, (sc,))

event_schedule.enter(30, 1, do_something, (s,))
event_schedule.run()
5 của bạn được thực hiện. Bạn cũng có thể mã hóa đường dẫn của trình thông dịch Python của mình (ví dụ:
import sched
import time

event_schedule = sched.scheduler(time.time, time.sleep)

def do_something():
    print("Hello, World!")
    event_schedule.enter(30, 1, do_something, (sc,))

event_schedule.enter(30, 1, do_something, (s,))
event_schedule.run()
6), nhưng điều này không linh hoạt và không thể di động trên các máy khác. Tiếp theo, bạn sẽ cần đặt quyền của tệp để cho phép thực thi:

Bắt đầu tập lệnh Python trong nền

Bây giờ bạn có thể chạy tập lệnh với Nohup mà bỏ qua tín hiệu treo. Điều này có nghĩa là bạn có thể đóng thiết bị đầu cuối mà không dừng thực thi. Ngoài ra, don không quên thêm

import sched
import time

event_schedule = sched.scheduler(time.time, time.sleep)

def do_something():
    print("Hello, World!")
    event_schedule.enter(30, 1, do_something, (sc,))

event_schedule.enter(30, 1, do_something, (s,))
event_schedule.run()
7 để tập lệnh chạy trong nền:

Nếu bạn không thêm shebang vào tệp, bạn có thể chạy tập lệnh bằng lệnh này:

nohup python /path/to/test.py &

Đầu ra sẽ được lưu trong tệp

import sched
import time

event_schedule = sched.scheduler(time.time, time.sleep)

def do_something():
    print("Hello, World!")
    event_schedule.enter(30, 1, do_something, (sc,))

event_schedule.enter(30, 1, do_something, (s,))
event_schedule.run()
8, trừ khi bạn chỉ định tệp đầu ra như ở đây:

nohup /path/to/test.py > output.log &
nohup python /path/to/test.py > output.log &

Tìm và tiêu diệt quá trình chạy

Bạn có thể tìm thấy quy trình và ID quy trình của nó với lệnh này:

Nếu bạn muốn dừng thực thi, bạn có thể giết nó bằng lệnh giết:

Cũng có thể tiêu diệt quy trình bằng cách sử dụng PKILL, nhưng hãy chắc chắn rằng bạn kiểm tra xem không có tập lệnh khác chạy cùng tên:

Bộ đệm đầu ra

Nếu bạn kiểm tra tệp đầu ra

import sched
import time

event_schedule = sched.scheduler(time.time, time.sleep)

def do_something():
    print("Hello, World!")
    event_schedule.enter(30, 1, do_something, (sc,))

event_schedule.enter(30, 1, do_something, (s,))
event_schedule.run()
8 trong quá trình thực thi, bạn có thể nhận thấy rằng các đầu ra không được ghi vào tệp này cho đến khi thực hiện kết thúc. Điều này xảy ra vì bộ đệm đầu ra. Nếu bạn thêm cờ
taskkill /pid processId /f
0, bạn có thể tránh bộ đệm đầu ra như thế này:

nohup python -u ./test.py &

Hoặc bằng cách chỉ định tệp nhật ký:

nohup python -u ./test.py > output.log &

Hãy cho chúng tôi xem cách chạy chương trình Python hoặc dự án trong nền, tức là chương trình sẽ bắt đầu chạy từ thiết bị thời điểm đang bật và dừng khi tắt hoặc khi bạn đóng nó. Chỉ cần chạy một lần để đảm bảo chương trình không có lỗi miễn phí

Một cách là sử dụng Pythonw, Pythonw là sự kết hợp của Python+mà không có cửa sổ cuối, tức là chạy Python mà không có cửa sổ đầu cuối. Bạn có thể sử dụng nó bằng cách chạy dòng sau trên thiết bị đầu cuối:pythonw, pythonw is the concatenation of python+without terminal window, i.e. run python without terminal window. You can use it by running the following line on the terminal:

Pythonw

Ở đây, nền tảng.py là tệp:

Trong Linux và Mac, để chạy các tệp PY trong nền bạn chỉ cần thêm và ký sau khi sử dụng lệnh, nó sẽ cho trình thông dịch chạy chương trình trong nền & nbsp;

python fileName.py && nbsp;

Nó sẽ chạy chương trình trong nền cũng đồng thời bạn có thể sử dụng thiết bị đầu cuối. Sẽ xử lý ID cho quy trình nền, nếu bạn muốn bạn cũng có thể tiêu diệt quy trình bằng cách sử dụng vì bạn có thể giết nó bằng Ctrl+C, để giết nó, mở một phiên đầu cuối khác và sử dụng lệnh

giết -9 {{id got after}} &

Kill được viết tắt để giết quá trình trong khi -9 được sử dụng để giết nó ngay lập tức, trạng thái tương ứng sẽ được cập nhật. Để có được đầu ra của bạn, bạn có thể xóa nó trong một tệp & nbsp; bằng cách sử dụng & nbsp;

python filename.py> filenametoflush &

Nó sẽ tạo ra đầu ra, tức là đầu ra xả trong tệp nhưng nó được cập nhật trong bộ nhớ bộ đệm, bạn phải chờ chấm dứt chương trình để phản ánh đầu ra trong tệp đĩa cứng. Để giải quyết điều này, bạn chỉ cần nói với trình thông dịch Python rằng don lồng sử dụng các bước bộ nhớ đệm:

Kết thúc/giết hiện đang chạy tệp

Bây giờ sử dụng tiện ích & nbsp;

& nbsp; python -u filename.py> filetoflush &

Nó sẽ trực tiếp đặt đầu ra vào tệp bạn đã chọn.

Nếu bạn đóng thiết bị đầu cuối trước khi kết thúc chương trình, tất cả các quy trình được thực hiện bởi thiết bị đầu cuối sẽ dừng lại, một tình huống treo Bạn đóng thiết bị đầu cuối cha mẹ. Nohup đứng không có hangup & nbsp;nohup command as shown below nohup will assure that process is running till the end whether you close parent terminal. nohup stands for no hangup 

NOHUP PYTHON -U FILENAME.PY & NBSP;

Bây giờ bạn không cần phải xóa đầu ra trong bất kỳ tệp nào vì NoHUP Utility tạo ra một tệp có tên Nohup.out trong khi thực thi. Nó sẽ giống như tệp nhật ký. Tên của đầu ra điền được tạo bởi Nohup sẽ phản ánh. Để chấm dứt thực thi này, bạn sẽ cần quy trình ID, không có vấn đề gì nếu bạn có thể nhớ hoặc nếu bạn có thể, bạn cần tìm kiếm tệp chỉ cần sử dụng lệnh sau

PS AX | GREP FILENAME.PY

GREP là để tìm kiếm mẫu, nó sẽ phản ánh ID quá trình trên thiết bị đầu cuối chỉ cần tiêu diệt nó bằng cách sử dụng ID -9 ID. Bây giờ quá trình bị chấm dứt

Làm cách nào để chạy tập lệnh Python trong nền Linux?

Chạy bằng Nohup hoặc &.
Giữ ID quy trình nếu nó trả về ..
Kiểm tra ID quy trình nếu nó không trả lại với PS AUX | grep.
Nếu muốn dừng quá trình chạy thủ công giết & hoặc giết -9 cho nohup ..

Làm cách nào để giữ cho mã python chạy?

Câu trả lời của bạn Có, bạn có thể sử dụng một thời gian đúng: Vòng lặp không bao giờ phá vỡ để chạy mã Python liên tục.Ngoài ra, thời gian.Giấc ngủ được sử dụng để đình chỉ hoạt động của một kịch bản trong một khoảng thời gian.use a while True: loop that never breaks to run Python code continually. Also, time. sleep is used to suspend the operation of a script for a period of time.

Làm cách nào để chạy tập lệnh Python liên tục trên máy chủ?

Bắt đầu sử dụng Trình lập lịch tác vụ Windows..
Tạo nhiệm vụ đầu tiên của bạn.Tìm kiếm người lập lịch tác vụ của người dùng.....
Tạo một hành động.Đi hành động> mới ..
Thêm tệp thực thi Python vào tập lệnh chương trình.....
Thêm đường dẫn vào tập lệnh Python của bạn trong các đối số.....
Kích hoạt thực thi tập lệnh của bạn ..

Làm cách nào để làm cho các kịch bản Python chạy mãi mãi?

Cách đơn giản nhất để giữ cho một chương trình chạy mãi mãi là đặt mã của bạn trong một vòng lặp và đặt điều kiện thành true.Bạn có thể chạy nhiều tập lệnh python cùng một lúc không?put your code in a while loop and set the condition to True. Can you run multiple python scripts at once?