Hướng dẫn when should you use threads in python? - khi nào bạn nên sử dụng chủ đề trong python?
Tôi có một dự án cho công việc. Chúng tôi đã viết một mô -đun và ở đó như một #Todo để triển khai luồng để cải thiện mô -đun. Tôi là một lập trình viên Python khá mới và quyết định đánh một cú đánh vào đó. Trong khi học và thực hiện luồng, tôi đã có câu hỏi tương tự như có bao nhiêu chủ đề là quá nhiều? Bởi vì chúng tôi có một hàng đợi khoảng 6 đối tượng cần được xử lý, vậy tại sao lại tạo 6 luồng (hoặc bất kỳ luồng nào) để xử lý các đối tượng trong danh sách hoặc hàng đợi khi thời gian xử lý không đáng kể? (Mỗi đối tượng mất nhiều nhất khoảng 2 giây để xử lý) Show Vì vậy, tôi đã chạy một thí nghiệm nhỏ. Tôi muốn biết nếu có mức tăng hiệu suất từ việc sử dụng luồng. Xem mã Python của tôi bên dưới:
Thử nghiệm này tìm thấy các số nguyên tố trong khoảng từ 1 đến 10000. Thiết lập này được lấy khá nhiều từ https://www.tutorialspoint.com/python3/python_multithreading.htms nhưng thay vì in một chuỗi đơn giản, tôi hỏi các chủ đề để tìm các số nguyên tố chính để tìm các số nguyên tố chính để tìm các số nguyên tố để tìm các số nguyên tố để tìm số nguyên tố để tìm số nguyên tố để tìm . Đây thực sự không phải là ứng dụng trong thế giới thực của tôi nhưng hiện tại tôi không thể kiểm tra mã tôi đã viết cho mô -đun. Tôi nghĩ rằng đây là một thử nghiệm tốt để đo lường hiệu quả của các chủ đề bổ sung. Ứng dụng trong thế giới thực của tôi liên quan đến việc nói chuyện với nhiều thiết bị nối tiếp. Tôi đã chạy bài kiểm tra 5 lần và trung bình thời gian. Dưới đây là kết quả trong một biểu đồ: Các câu hỏi của tôi liên quan đến luồng và bài kiểm tra này như sau:
Tôi nhận thấy rằng khi tỷ lệ công việc trên luồng trở nên gần với 1: 1, thời gian thực hiện để thiết lập các luồng trở nên dài hơn. Vì vậy, việc chỉ có hữu ích khi bạn tạo các chủ đề một lần và giữ cho chúng tồn tại càng lâu càng tốt để xử lý các yêu cầu có thể enqueue nhanh hơn chúng có thể được tính toán? Khi nào tôi nên sử dụng chủ đề?Chủ đề rất hữu ích trong lập trình hiện đại bất cứ khi nào một quy trình có nhiều nhiệm vụ để thực hiện độc lập với các quy trình khác.Điều này đặc biệt đúng khi một trong các nhiệm vụ có thể chặn và mong muốn cho phép các nhiệm vụ khác tiến hành mà không chặn.whenever a process has multiple tasks to perform independently of the others. This is particularly true when one of the tasks may block, and it is desired to allow the other tasks to proceed without blocking.
Khi nào bạn không nên sử dụng chủ đề?Một lý do để không sử dụng đa luồng là: có một nhiệm vụ và không có giao diện người dùng nào mà tác vụ sẽ can thiệp.There is one task, and no user interface with which the task will interfere.
Tôi nên sử dụng luồng hoặc đa xử lý?Đa bộ xử lý là một điều dễ dàng hơn để giảm so với ren nhưng có chi phí bộ nhớ cao hơn.Nếu mã của bạn bị ràng buộc CPU, đa xử lý rất có thể sẽ là lựa chọn tốt hơn, đặc biệt là nếu máy đích có nhiều lõi hoặc CPU.. If your code is CPU bound, multiprocessing is most likely going to be the better choice—especially if the target machine has multiple cores or CPUs.
Có phải luồng tốt trong Python?Python không an toàn cho luồng và ban đầu được thiết kế với một thứ gọi là Gil, hoặc khóa thông dịch toàn cầu, đảm bảo các quy trình được thực thi theo chiều cao trên CPU của máy tính.Nhìn bề ngoài, điều này có nghĩa là các chương trình Python không thể hỗ trợ đa xử lý., and was originally designed with something called the GIL, or Global Interpreter Lock, that ensures processes are executed serially on a computer's CPU. On the surface, this means Python programs cannot support multiprocessing. |