Hướng dẫn passing arguments to thread python - truyền đối số cho chuỗi python
Tôi có 7 như hình dưới đây: 7 as shown below: Show
Bây giờ, tôi cố gắng tạo một chủ đề bằng cách sử dụng 7 và chỉ cho nó 9 và 0 nhưng không phải Arg3 như được hiển thị bên dưới: 7, and giving it only 9 and 0 but not arg3 as shown below:
Nhưng, tôi đã gặp lỗi cú pháp. Làm thế nào tôi có thể giải quyết lỗi để tôi có thể chuyển một đối số cho luồng là arg2? Bài đăng này bao gồm những điều cơ bản về mô -đun luồng của Python. Chủ đề cho phép bạn chạy nhiều tác vụ cùng một lúc. Điều này cho phép bạn thực hiện một hoặc nhiều nhiệm vụ trong khi một tác vụ khác chạy.
Chủ đề là gì?Luồng một phương pháp Thông qua các lập luận Luồng một phương phápThông qua các lập luận
Luồng một lớp
Quản lý chủ đề của bạn Thông qua các lập luậnLuồng một lớp
Quản lý chủ đề của bạn
Đặt tên Luồng một lớpViệc luồng một lớp có thể khá hữu ích vì bạn có thể có nhiều phương thức cụ thể cho một luồng và việc giữ dữ liệu của bạn ở một nơi cụ thể dễ dàng hơn cho một luồng. Một ví dụ về luồng một lớp là:
Trong ví dụ này, tôi tạo một lớp mở rộng luồng. Tôi đã tạo phương thức khởi tạo với một cuộc gọi khởi tạo đến siêu lớp và phương thức chạy là những gì sẽ được chạy khi tôi gọi START (). Giống như lần trước tôi lặp 4 lần nhưng lần này tôi chỉ cần sử dụng 7 để thiết lập biến luồng. Điều này sẽ cung cấp đầu ra:run method which is what will be run when I call start(). Just like last time I loop 4 times but this time I only need to use 7 to set up the thread variable. This will provide the output:
Xem làm thế nào tất cả các chuỗi được cùng nhau; Điều này cho thấy rằng tất cả chúng được in vào những thời điểm rất giống nhau và sau đó tất cả các dòng mới được đưa vào. Trong các ví dụ trên, điều này đã không xảy ra khi tôi buộc ký tự mới. Lưu ý rằng nếu bạn không cần một phương thức khởi tạo, bạn có thể xóa nó hoàn toàn bao gồm cả cuộc gọi Super (). Thông qua các lập luậnĐể vượt qua các đối số, bạn chỉ cần sử dụng lớp như bình thường. Ví dụ:
Trong ví dụ này, tôi đã thêm một tham số vào lớp trong phương thức khởi tạo giống như bạn thường sẽ và lưu nó để nó có thể in nó sau. Sau đó, tôi chỉ cần chuyển một biến cho lớp sẽ được in. Điều này sẽ xuất hiện: Giống như lần trước họ đã nối thành một chuỗi theo sau là các ký tự dòng mới. Khi chuyển các biến, bạn cần giữ cuộc gọi Super () như bây giờ bạn đang sử dụng phương thức khởi tạo trừ khi bạn chuyển nó bằng một phương thức khác trước khi gọi chạy. Quản lý chủ đề của bạnPython có rất nhiều phương thức, biến và tham số hữu ích để quản lý các chủ đề của bạn. Đây là một số trong những cái cơ bản. Đặt tênĐặt tên cho các chủ đề có thể khá hữu ích để xác định chúng. Để làm điều này, khi tạo một luồng cuộc gọi 8 và truyền một chuỗi. Ví dụ:
Bây giờ để lấy tên của luồng chỉ cần gọi 9 trên đối tượng luồng. Có một vài cách để có được đối tượng chủ đề tùy thuộc vào cách bạn lưu trữ nó. Nếu bạn ở trong luồng và bạn đang ở trong một lớp luồng, bạn chỉ có thể sử dụng 0; Ví dụ: 0Nếu bạn muốn có được nó bên ngoài lớp, bạn có thể nhận được biến bạn đã lưu nó dưới và sử dụng nó. Ví dụ: khi tôi lưu các luồng trong danh sách trước đó, tôi chỉ có thể sử dụng một phần tử từ nó vì chúng là các đối tượng chủ đề tôi muốn. Ví dụ sau đây sẽ in tên của chủ đề đầu tiên được thêm vào danh sách này. 1Tham gia chủ đềTham gia một chủ đề cho phép chúng tôi đợi cho đến khi nó bị chấm dứt trước khi chúng tôi tiếp tục. Ví dụ: 2Trong ví dụ này, tôi tạo chủ đề và bắt đầu nó. Sau đó tôi gọi tham gia mà chờ cho đến khi chủ đề kết thúc. Nếu luồng được gọi là không kết thúc, luồng gọi là phương thức 1 (có thể là luồng chính) sẽ đợi vô thời hạn. Điều này có nghĩa là bạn không nên sử dụng .Join () trên các luồng không hoàn thành trừ khi bạn muốn dừng việc thực hiện luồng vì một lý do khác.Bạn có thể đợi nhiều chủ đề kết thúc bằng cách gọi .Join () sau khi bạn bắt đầu tất cả. Ví dụ sau đây sẽ đợi cho đến khi tất cả 4 chủ đề được hoàn thành trước khi nó chuyển đến câu lệnh in. 3Chủ đề daemonMột luồng daemon là một luồng sẽ không tiếp tục chạy nếu phần còn lại của tập lệnh đã dừng và không còn các luồng không phải là Daemon nữa. Chúng ta có thể nói chủ đề chính là không phải là Daemon vì nó không bị dừng đột ngột khi đó là luồng duy nhất chạy. Điều này có nghĩa là đặt giá trị daemon chủ đề thành 2 sẽ có nghĩa là nó sẽ không tiếp tục chạy sau khi chủ đề chính hoàn thành (hoặc các luồng không phải là daemon khác); Chúng ta có thể đặt 3 thành 4 để đảm bảo luồng tiếp tục chạy ngay cả khi luồng chính kết thúc. Giá trị daemon phải được đặt trước khi 5 được gọi trên luồng. Để đặt nếu một luồng là daemon, bạn có thể vượt qua 6 (hoặc 4) ở cùng một nơi tôi đặt Args trước: 4Bạn có thể thay vào đó đặt một luồng thành Daemon bằng cách sử dụng 8 trên luồng. Nếu bạn đang luồn một lớp, bạn có thể gọi 9 trong phương thức khởi tạo hoặc 8 trên luồng như nếu bạn đang luồn một phương thức. Ví dụ: 5Để kiểm tra xem một luồng là daemon, bạn có thể kiểm tra 1 trên luồng; Đây là một bool.Nhận tất cả các chủ đềNếu bạn muốn có được tất cả các chủ đề hiện đang sống, bạn có thể gọi 2. Điều này sẽ trả về tất cả các chủ đề còn sống bao gồm cả luồng chính trong một danh sách. Nếu bạn muốn lấy tất cả tên của các chủ đề còn sống hiện tại, hãy sử dụng: 6Là một chủ đề còn sống?Nếu bạn muốn kiểm tra xem một chủ đề cụ thể có còn sống không, bạn có thể gọi 3 trên luồng. Điều này sẽ trả về true nếu chủ đề vẫn đang chạy.Tại sao nó sẽ không làm cho tập lệnh của bạn chạy nhanh hơnTrong hầu hết các trường hợp, việc xâu chuỗi mã đã tồn tại của bạn sẽ không làm cho nó chạy nhanh hơn. Các chủ đề Python được thiết kế để chạy nhiều tác vụ cùng một lúc, tuy nhiên, đây chỉ là trên một lõi CPU. Một tập lệnh Python bình thường được chạy trên một lõi duy nhất, vì vậy khi bạn tạo các luồng, nó sẽ không tăng tốc vì về cơ bản nó đang làm điều tương tự chỉ vào các thời điểm khác nhau. Vấn đề/tính năng này (nếu bạn muốn nhìn nó theo cách tích cực) là do khóa phiên dịch toàn cầu, trong đó có nghĩa là "nhiều luồng không thể sử dụng nhiều lõi", đó là lý do để không tăng tốc độ . Đây là một cuộc nói chuyện tuyệt vời trên Gil với một số slide tuyệt vời. Nếu bạn muốn có nhiều tác vụ chạy trên nhiều lõi, hãy xem mô -đun đa xử lý. Vì đây chỉ là một cái nhìn cơ bản về việc xâu chuỗi nên một người chưa sử dụng nên nó có thể hiểu nó tốt hơn, tôi đã bỏ qua những thứ như sự kiện, tín hiệu và khóa. Để đọc thêm về các chủ đề, bạn có thể truy cập các trang này:
Bạn có thể chuyển đối số cho một chủ đề không?Bạn chỉ có thể chuyển một đối số duy nhất cho hàm mà bạn đang gọi trong luồng mới.Tạo một cấu trúc để giữ cả hai giá trị và gửi địa chỉ của cấu trúc.Lưu câu trả lời này.. Create a struct to hold both of the values and send the address of the struct. Save this answer.
Chủ đề daemon trong Python là gì?Các luồng luôn luôn chạy trong nền cung cấp các hỗ trợ cho các luồng chính hoặc không phải là Daemon, các luồng thực thi nền đó được coi là chủ đề daemon.Chủ đề daemon không chặn luồng chính thoát ra và tiếp tục chạy ở chế độ nền., those background executing threads are considered as Daemon Threads. The Daemon Thread does not block the main thread from exiting and continues to run in the background.
Chủ đề trong Python với ví dụ là gì?Một chủ đề là gì?Một luồng là một luồng thực thi riêng biệt.Điều này có nghĩa là chương trình của bạn sẽ có hai điều xảy ra cùng một lúc.Nhưng đối với hầu hết các triển khai Python 3, các chủ đề khác nhau không thực sự thực hiện cùng một lúc: chúng chỉ xuất hiện.a separate flow of execution. This means that your program will have two things happening at once. But for most Python 3 implementations the different threads do not actually execute at the same time: they merely appear to. |