Hướng dẫn how do i know if a python thread is running? - làm cách nào để biết chuỗi python có đang chạy không?
Tôi có một chủ đề mở rộng chủ đề. Mã trông hơi như thế này;
Vì vậy, ở đây trong mã giả của tôi, tôi kiểm tra xem liệu có bất kỳ công việc nào không (như DB, v.v.) và nếu có một số công việc, và nếu có ít hơn 5 luồng chạy, hãy tạo các luồng mới. Vì vậy, từ đây, sau đó tôi kiểm tra các chủ đề của mình và đây là nơi tôi bị mắc kẹt, tôi có thể sử dụng .Join () Sau đó đợi cho đến khi hoàn thành - ngay cả khi các chủ đề khác kết thúc .... Vì vậy, có một cách để kiểm tra xem một chủ đề được thực hiện, sau đó xóa nó nếu vậy? ví dụ Cải thiện bài viết Lưu bài viết Vấn đề: Để biết khi nào một chủ đề khởi chạy thực sự bắt đầu chạy. To know when will a launched thread actually starts running. Một tính năng chính của các chủ đề là chúng thực thi độc lập và không theo chủ nghĩa. Điều này có thể đưa ra một vấn đề đồng bộ hóa khó khăn nếu các chủ đề khác trong chương trình cần biết liệu một luồng đã đạt đến một điểm nhất định trong việc thực hiện trước khi thực hiện các hoạt động tiếp theo. Để giải quyết các vấn đề như vậy, hãy sử dụng đối tượng sự kiện từ thư viện luồng.threading library. Các trường hợp sự kiện tương tự như cờ dính của người Viking cho phép các chủ đề chờ đợi điều gì đó xảy ra. Ban đầu, một sự kiện được đặt thành 0. Nếu sự kiện không được đặt và một luồng chờ đợi sự kiện, nó sẽ chặn (tức là, đi ngủ) cho đến khi sự kiện được đặt. Một chủ đề đặt sự kiện sẽ đánh thức tất cả các luồng xảy ra đang chờ (nếu có). Nếu một chủ đề chờ đợi một sự kiện đã được thiết lập, nó chỉ tiếp tục, tiếp tục thực hiện. Mã số 1: Mã sử dụng một sự kiện để phối hợp khởi động một luồng.
0 1 2 3 4 5 1 7 8 9 1Working 0 Working 11 Working 0 Working 12 Working 0 Working 13 Working 0 Working 14 Working 0 Working 15 2 3Working 0 Working 18 Working 0 Working 19 Working 0 Working 15 from 1from 2from 3 from 4Working 0 Working 15 from 6from 7 5
2 3threading 4 5
3import 3import 4
2 3import 9 5Khi chạy mã ở trên, thông báo đếm ngược của Google sẽ luôn xuất hiện sau khi tin nhắn bắt đầu đếm ngược. Điều này được phối hợp bởi sự kiện làm cho luồng chính đợi cho đến khi hàm
Mã số 2: Thực hiện bộ hẹn giờ định kỳ mà các luồng khác có thể theo dõi để xem bất cứ khi nào bộ hẹn giờ hết hạn.
0 1Working 0 Working 11 Working 0 Working 12 Working 0 Working 13 Working 0 Working 14 Working 0 Working 15 from 1from 2from 3 from 4Working 0 Working 15 from 6from 7 5
3import 3import 4Khi chạy mã ở trên, thông báo đếm ngược của Google sẽ luôn xuất hiện sau khi tin nhắn bắt đầu đếm ngược. Điều này được phối hợp bởi sự kiện làm cho luồng chính đợi cho đến khi hàm Đối tượng sự kiện được sử dụng tốt nhất cho các sự kiện một lần. Đó là, tạo một sự kiện, các luồng chờ sự kiện được thiết lập và sau khi được đặt, sự kiện sẽ bị loại bỏ. Working 0 Working 15 import 5Mặc dù có thể xóa một sự kiện bằng phương pháp Nếu một luồng sẽ liên tục báo hiệu một sự kiện nhiều lần, thì có lẽ tốt hơn là sử dụng một đối tượng điều kiện thay thế. Working 0 Working 15 from 6import 2 18Working 0 Working 15 20import 2 22Mã số 2: Thực hiện bộ hẹn giờ định kỳ mà các luồng khác có thể theo dõi để xem bất cứ khi nào bộ hẹn giờ hết hạn.
1 20import 2 22 1def import 1______72Working 0 Working 15 import 2import 6from 3 import 8 23import 2 53Working 0 Working 15 import 2time 1from 3 Working 0 Working 13 Code #3 : Use of timer Working 0 Working 15 import 2time 6from 3 time 8 59 1def def 1import 2def 3Working 0 Working 15 threading 6from 3 def 7from 3 import 2 00Working 0 Working 15 68Working 0 Working 15 022 04
08import 2def 3 1Working 0 Working 11 04Working 0 Working 14 23import 2 25from 3 from 4 23import 2 30Working 0 Working 15 68Working 0 Working 15 2 3 93Working 0 Working 19
32______72Working 0 Working 15 40from 3 import 2 43Working 0 Working 15 Working 0 Working 11 40from 3from 3 import 2 50& NBSP; Mã số 3: Sử dụng hẹn giờ 54from 3 56from 7 5 1Working 0 Working 117 1 2 3Working 0 Working 121 Working 0 Working 19
61 1Working 0 Working 11 64Working 0 Working 13 Working 0 Working 14 Working 0 Working 15 2 3Working 0 Working 18 73Working 0 Working 15 75from 2from 3 from 4 1import 5
80Code #5 : Working 0 Working 146 Working 0 Working 146 Đầu ra: Working 0 Working 1 Viết mã liên quan đến rất nhiều đồng bộ hóa khó khăn giữa các luồng có khả năng làm cho đầu của bạn phát nổ.Một cách tiếp cận lành mạnh hơn là các luồng chủ đề như các nhiệm vụ truyền đạt bằng cách sử dụng hàng đợi hoặc làm diễn viên. Phương pháp nào được sử dụng để xác định một luồng trong Python?current_thread (). Nhận dạng (hoặc luồng. currentThread (). Nhận dạng cho Python <2.6). ident (or threading. currentThread(). ident for Python < 2.6).
Python có chạy trên một chủ đề không?Python không phải là ngôn ngữ đơn.Các quá trình Python thường sử dụng một luồng duy nhất vì GIL.Mặc dù GiL, các thư viện thực hiện các nhiệm vụ nặng về tính toán như Numpy, Scipy và Pytorch sử dụng các triển khai dựa trên C dưới mui xe, cho phép sử dụng nhiều lõi.. Python processes typically use a single thread because of the GIL. Despite the GIL, libraries that perform computationally heavy tasks like numpy, scipy and pytorch utilise C-based implementations under the hood, allowing the use of multiple cores. |