Bạn không thể khởi động lại một quy trình trong Python, thay vào đó bạn phải tạo và bắt đầu một quy trình mới với cùng một cấu hình.cannot restart a process in Python, instead you must create and start a new process with the same configuration.
Trong hướng dẫn này, bạn sẽ khám phá cách mô phỏng việc khởi động lại một quy trình trong Python.simulate restarting a process in Python.
Bắt đầu nào.
- Cần khởi động lại một quy trình
- Cách khởi động lại một quy trình
- Ví dụ về việc khởi động lại quá trình chấm dứt
- Ví dụ về việc khởi động lại một quy trình với một thể hiện mới
- Đọc thêm
- Takeaways
Một quy trình là một thể hiện đang chạy của một chương trình máy tính.process is a running instance of a computer program.
Mỗi chương trình Python được thực hiện trong một quy trình, đây là một ví dụ mới của trình thông dịch Python. Quá trình này có tên chính và có một luồng được sử dụng để thực hiện các hướng dẫn chương trình được gọi là chính. Cả hai quy trình và luồng được tạo và quản lý bởi hệ điều hành cơ bản.
Đôi khi chúng ta có thể cần tạo các quy trình con mới trong chương trình của mình để thực thi mã đồng thời.
Python cung cấp khả năng tạo và quản lý các quy trình mới thông qua lớp đa xử lý.multiprocessing.Process class.
Bạn có thể tìm hiểu thêm về đa xử lý trong hướng dẫn:
- Đa bộ xử lý trong Python: Hướng dẫn hoàn chỉnh
Có thể có những trường hợp các quy trình mới của chúng tôi bị chấm dứt, thông thường bằng cách hoàn thành việc thực thi của họ hoặc bằng cách gây ra lỗi và chúng tôi cần khởi động lại chúng.
Điều này có thể là vì nhiều lý do như:
- Quá trình thực hiện một hành động hữu ích mà chúng tôi muốn chạy định kỳ.
- Quá trình này là một nhiệm vụ nền Daemon mà chúng tôi muốn luôn chạy.
- Quá trình này đang thực hiện một nhiệm vụ có thể được khởi động lại từ điểm kiểm tra.
Một quá trình có thể được khởi động lại trong Python và nếu có thì làm thế nào?
Cách khởi động lại một quy trình
Ví dụ về việc khởi động lại quá trình chấm dứt
Ví dụ về việc khởi động lại một quy trình với một thể hiện mới
Đọc thêmstart[] method on it again to reuse it.
Takeawaysrun[] function.
Một quy trình là một thể hiện đang chạy của một chương trình máy tính.start[] function on a terminated process will result in an AssertionError indicating that the process can only be started once.
- Mỗi chương trình Python được thực hiện trong một quy trình, đây là một ví dụ mới của trình thông dịch Python. Quá trình này có tên chính và có một luồng được sử dụng để thực hiện các hướng dẫn chương trình được gọi là chính. Cả hai quy trình và luồng được tạo và quản lý bởi hệ điều hành cơ bản.
Đôi khi chúng ta có thể cần tạo các quy trình con mới trong chương trình của mình để thực thi mã đồng thời.start[] function.
Python cung cấp khả năng tạo và quản lý các quy trình mới thông qua lớp đa xử lý.
Bạn có thể tìm hiểu thêm về đa xử lý trong hướng dẫn:
Download my FREE PDF cheat sheet
Ví dụ về việc khởi động lại quá trình chấm dứt
Ví dụ về việc khởi động lại một quy trình với một thể hiện mới
Đọc thêmAssertionError.
Takeaways
Một quy trình là một thể hiện đang chạy của một chương trình máy tính.
Mỗi chương trình Python được thực hiện trong một quy trình, đây là một ví dụ mới của trình thông dịch Python. Quá trình này có tên chính và có một luồng được sử dụng để thực hiện các hướng dẫn chương trình được gọi là chính. Cả hai quy trình và luồng được tạo và quản lý bởi hệ điều hành cơ bản. Đôi khi chúng ta có thể cần tạo các quy trình con mới trong chương trình của mình để thực thi mã đồng thời.task[]: Python cung cấp khả năng tạo và quản lý các quy trình mới thông qua lớp đa xử lý.# block for a moment sleep[1]sleep[1] Bạn có thể tìm hiểu thêm về đa xử lý trong hướng dẫn:# report a message Đa bộ xử lý trong Python: Hướng dẫn hoàn chỉnhprint['Hello from the new process'] |
Có thể có những trường hợp các quy trình mới của chúng tôi bị chấm dứt, thông thường bằng cách hoàn thành việc thực thi của họ hoặc bằng cách gây ra lỗi và chúng tôi cần khởi động lại chúng.multiprocessing.Process class and configure it to execute our custom task[] function via the “target” keyword.
Điều này có thể là vì nhiều lý do như:.. Quá trình thực hiện một hành động hữu ích mà chúng tôi muốn chạy định kỳ. process=Process[target=task]=Process[target=task] |
Quá trình này là một nhiệm vụ nền Daemon mà chúng tôi muốn luôn chạy.run[] function and in turn call our custom task[] function.
Điều này có thể là vì nhiều lý do như:.. Quá trình thực hiện một hành động hữu ích mà chúng tôi muốn chạy định kỳ. process.start[].start[] |
Quá trình này là một nhiệm vụ nền Daemon mà chúng tôi muốn luôn chạy.
Điều này có thể là vì nhiều lý do như:.. Quá trình thực hiện một hành động hữu ích mà chúng tôi muốn chạy định kỳ. process.join[].join[] |
Quá trình này là một nhiệm vụ nền Daemon mà chúng tôi muốn luôn chạy.
Điều này có thể là vì nhiều lý do như:.. Quá trình thực hiện một hành động hữu ích mà chúng tôi muốn chạy định kỳ. process.start[].start[] |
Quá trình này là một nhiệm vụ nền Daemon mà chúng tôi muốn luôn chạy.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | Quá trình này đang thực hiện một nhiệm vụ có thể được khởi động lại từ điểm kiểm tra. Một quá trình có thể được khởi động lại trong Python và nếu có thì làm thế nào? Quá trình Python không thể được khởi động lại hoặc tái sử dụng.time import sleep Trên thực tế, đây có lẽ là một hạn chế của khả năng của các quy trình được cung cấp bởi hệ điều hành cơ bản.multiprocessing import Process Mỗi chương trình Python được thực hiện trong một quy trình, đây là một ví dụ mới của trình thông dịch Python. Quá trình này có tên chính và có một luồng được sử dụng để thực hiện các hướng dẫn chương trình được gọi là chính. Cả hai quy trình và luồng được tạo và quản lý bởi hệ điều hành cơ bản. Đôi khi chúng ta có thể cần tạo các quy trình con mới trong chương trình của mình để thực thi mã đồng thời.task[]: Python cung cấp khả năng tạo và quản lý các quy trình mới thông qua lớp đa xử lý.# block for a moment sleep[1]sleep[1] Bạn có thể tìm hiểu thêm về đa xử lý trong hướng dẫn:# report a message Đa bộ xử lý trong Python: Hướng dẫn hoàn chỉnhprint['Hello from the new process'] Có thể có những trường hợp các quy trình mới của chúng tôi bị chấm dứt, thông thường bằng cách hoàn thành việc thực thi của họ hoặc bằng cách gây ra lỗi và chúng tôi cần khởi động lại chúng. if__name__=='__main__':__name__=='__main__': Điều này có thể là vì nhiều lý do như:# create a new process process=Process[target=task]process =Process[target=task] Quá trình thực hiện một hành động hữu ích mà chúng tôi muốn chạy định kỳ.# start the process process.start[]process.start[] & nbsp; & nbsp; & nbsp; & nbsp;# chờ quá trình kết thúc# wait for the process to finish process.join[]process.join[] & nbsp; & nbsp; & nbsp; & nbsp;# Hãy thử và bắt đầu lại quá trình# try and start the process again process.start[]process.start[] |
Chạy ví dụ đầu tiên tạo ra một thể hiện quy trình sau đó bắt đầu thực thi nó.
Quá trình mới được bắt đầu, các khối trong một khoảnh khắc sau đó báo cáo một tin nhắn.
Quá trình cha mẹ tham gia vào quy trình mới và chờ nó chấm dứt. Sau khi chấm dứt, quá trình cha mẹ cố gắng bắt đầu lại quá trình tương tự.
Kết quả là một khẳng định, như chúng tôi mong đợi.AssertionError, as we expected.
Xin chào từ quá trình mới Traceback [cuộc gọi gần đây nhất cuối cùng]: ... AssitSerError: Không thể bắt đầu một quá trình hai lần |
Điều này nhấn mạnh rằng thực sự chúng ta không thể gọi phương thức start [] [ví dụ: khởi động lại] một quá trình đã chấm dứt.start[] method [e.g. restart] a process that has already terminated.
Tiếp theo, hãy để Lôi nhìn vào một cách tiếp cận thay thế để tạo một thể hiện quy trình mới.
Khóa học đa xử lý Python miễn phí
Tải xuống bảng cheat API đa xử lý của tôi và như một phần thưởng, bạn sẽ có quyền truy cập miễn phí vào khóa học email 7 ngày của tôi.
Khám phá cách sử dụng mô -đun đa xử lý Python bao gồm cách tạo và bắt đầu các quá trình con và cách sử dụng khóa và semaphores.
Tìm hiểu thêm & NBSP;
Ví dụ về việc khởi động lại một quy trình với một thể hiện mới
Chúng ta có thể mô phỏng việc khởi động lại một quy trình bằng cách tạo một quy trình mới với cùng một cấu hình và bắt đầu nó thay thế.
Một quy trình mới có cùng cấu hình có thể được tạo.
Điều này liên quan đến các đối số cho bộ xây dựng lớp đa xử lý.multiprocessing.Process class constructor such as:
- Hàm mục tiêu.
- Đối số chức năng đích [tuple hoặc dict].
- Name.
- Daemon.
Nếu chúng tôi xem lại mã nguồn cho lớp đa xử lý._name, _target, _args, and so on.
Thay vì cố gắng truy cập các thuộc tính riêng này, thay vào đó chúng ta có thể tạo một thể hiện quy trình mới và chỉ định các đối số cho hàm tạo theo cách thủ công.
..... AssitSerError: Không thể bắt đầu một quá trình hai lần process2=Process[target=task]=Process[target=task] |
Điều này nhấn mạnh rằng thực sự chúng ta không thể gọi phương thức start [] [ví dụ: khởi động lại] một quá trình đã chấm dứt.
..... AssitSerError: Không thể bắt đầu một quá trình hai lần process2.start[].start[] Điều này nhấn mạnh rằng thực sự chúng ta không thể gọi phương thức start [] [ví dụ: khởi động lại] một quá trình đã chấm dứt. process2.join[].join[] |
Tiếp theo, hãy để Lôi nhìn vào một cách tiếp cận thay thế để tạo một thể hiện quy trình mới.
Khóa học đa xử lý Python miễn phí
Tải xuống bảng cheat API đa xử lý của tôi và như một phần thưởng, bạn sẽ có quyền truy cập miễn phí vào khóa học email 7 ngày của tôi. Khám phá cách sử dụng mô -đun đa xử lý Python bao gồm cách tạo và bắt đầu các quá trình con và cách sử dụng khóa và semaphores.create_process[] returnProcess[target=task]Process[target=task] |
Tìm hiểu thêm & NBSP;
Ví dụ về việc khởi động lại một quy trình với một thể hiện mới
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | Chúng ta có thể mô phỏng việc khởi động lại một quy trình bằng cách tạo một quy trình mới với cùng một cấu hình và bắt đầu nó thay thế. Một quy trình mới có cùng cấu hình có thể được tạo. Điều này liên quan đến các đối số cho bộ xây dựng lớp đa xử lý.time import sleep Hàm mục tiêu.multiprocessing import Process Đối số chức năng đích [tuple hoặc dict]. Nếu chúng tôi xem lại mã nguồn cho lớp đa xử lý.task[]: Thay vì cố gắng truy cập các thuộc tính riêng này, thay vào đó chúng ta có thể tạo một thể hiện quy trình mới và chỉ định các đối số cho hàm tạo theo cách thủ công.# block for a moment sleep[1]sleep[1] # Tạo một quy trình mới với cùng một cấu hình# report a message Sau đó, bắt đầu và tham gia nó như trước đây.print['Hello from the new process'] # Bắt đầu quá trình mới if__name__=='__main__':__name__=='__main__': # Đợi quá trình mới kết thúc# create a new process process=Process[target=task]process =Process[target=task] Cho rằng chúng ta phải định cấu hình thủ công một thể hiện quy trình mới, có thể có ý nghĩa khi sử dụng chức năng nhà máy trả về một thể hiện quy trình mới với cấu hình ưa thích trong những trường hợp có thể cần phải khởi động lại.# start the process process.start[]process.start[] & nbsp; & nbsp; & nbsp; & nbsp;# chờ quá trình kết thúc# wait for the process to finish process.join[]process.join[] Ví dụ:# create a new process with the same config process2=Process[target=task]process2=Process[target=task] # Nhà máy để tạo quy trình được cấu hình theo cách chúng ta thích# start the new process process2.start[]process2.start[] def create_process []# wait for the new process to finish process2.join[]process2.join[] |
Chúng tôi đã giành chiến thắng sử dụng một chức năng nhà máy trong trường hợp này vì quy trình của chúng tôi có cấu hình đơn giản.
Kết hợp điều này lại với nhau, ví dụ hoàn chỉnh về việc mô phỏng một quá trình khởi động lại với một thể hiện mới được liệt kê dưới đây.
# SuperfastPython.com
Xin chào từ quá trình mới Xin chào từ quá trình mới |
Traceback [cuộc gọi gần đây nhất cuối cùng]:
...
AssitSerError: Không thể bắt đầu một quá trình hai lần
- Điều này nhấn mạnh rằng thực sự chúng ta không thể gọi phương thức start [] [ví dụ: khởi động lại] một quá trình đã chấm dứt.
- Tiếp theo, hãy để Lôi nhìn vào một cách tiếp cận thay thế để tạo một thể hiện quy trình mới.
Khóa học đa xử lý Python miễn phí
- Tải xuống bảng cheat API đa xử lý của tôi và như một phần thưởng, bạn sẽ có quyền truy cập miễn phí vào khóa học email 7 ngày của tôi.
Khám phá cách sử dụng mô -đun đa xử lý Python bao gồm cách tạo và bắt đầu các quá trình con và cách sử dụng khóa và semaphores.
- Tìm hiểu thêm & NBSP;
- Ví dụ về việc khởi động lại một quy trình với một thể hiện mới
- Chúng ta có thể mô phỏng việc khởi động lại một quy trình bằng cách tạo một quy trình mới với cùng một cấu hình và bắt đầu nó thay thế.my book!].
Một quy trình mới có cùng cấu hình có thể được tạo.
Điều này liên quan đến các đối số cho bộ xây dựng lớp đa xử lý.
Hàm mục tiêu.
Ask your questions in the comments below and I will do my best to answer.
Ảnh của Zidhan Ibrahim trên unplash