Một ascii-ascii hơi vụng về để chứng minh cơ chế: 3 có lẽ được gọi bởi chủ đề chính. Nó cũng có thể được gọi bởi một chủ đề khác, nhưng sẽ không cần thiết phải làm phức tạp sơ đồ. Show ________ gọi 24 nên được đặt theo dõi chủ đề chính, nhưng để thể hiện mối quan hệ chủ đề và giữ cho nó đơn giản nhất có thể, tôi chọn đặt nó vào chủ đề trẻ em thay thế.
Vì vậy, lý do bạn không thấy bất kỳ thay đổi nào là vì chủ đề chính của bạn không làm gì sau 4 của bạn. Bạn có thể nói 4 là (chỉ) có liên quan đến luồng thực thi của chủ đề chính.Ví dụ, nếu bạn muốn tải xuống đồng thời một loạt các trang để kết hợp chúng vào một trang lớn, bạn có thể bắt đầu tải xuống đồng thời bằng cách sử dụng các chủ đề, nhưng cần phải đợi cho đến khi trang/chủ đề cuối cùng kết thúc trước khi bạn bắt đầu lắp ráp một trang duy nhất trong số nhiều. Đó là khi bạn sử dụng 3.
Yeaske 1.29314 Huy hiệu bạc21 Huy hiệu đồng14 silver badges21 bronze badges Đã trả lời ngày 26 tháng 2 năm 2013 lúc 10:00Feb 26, 2013 at 10:00
Câu hỏi câu hỏiDon Question 10,9k5 Huy hiệu vàng33 Huy hiệu bạc51 Huy hiệu Đồng5 gold badges33 silver badges51 bronze badges 7 Trực tiếp từ các tài liệu
Điều này có nghĩa là chủ đề chính sinh ra 8 và 9, chờ 8 kết thúc cho đến khi nó kết thúc.Tùy thuộc vào logic mà chương trình của bạn sử dụng, bạn có thể muốn đợi cho đến khi một chủ đề kết thúc trước khi chủ đề chính của bạn tiếp tục. Cũng từ các tài liệu:
Một ví dụ đơn giản, giả sử chúng ta có điều này:
Kết thúc với:
Điều này sẽ xuất hiện:
Ở đây, chủ đề chính chờ đợi chủ đề 8 kết thúc cho đến khi nó gọi 2 lần thứ hai.Ngoài ra, nếu chúng tôi có điều này:
Chúng tôi sẽ nhận được đầu ra này:
Ở đây chúng tôi thực hiện công việc của chúng tôi trong chủ đề chính và sau đó chúng tôi chờ đợi chủ đề 8 kết thúc. Trong trường hợp này, chúng tôi thậm chí có thể loại bỏ sự tham gia rõ ràng 4 và chương trình sẽ ngầm chờ đợi 8 kết thúc.Đã trả lời ngày 26 tháng 2 năm 2013 lúc 9:31Feb 26, 2013 at 9:31
1 Cảm ơn vì chủ đề này - nó cũng giúp tôi rất nhiều. Tôi đã học được điều gì đó về .join () hôm nay. Các luồng này chạy song song:
Và những lần chạy tuần tự này (không phải những gì tôi muốn):
Cụ thể, tôi đã cố gắng thông minh và ngăn nắp:
Những công việc này! Nhưng nó chạy tuần tự. Tôi có thể đặt bản thân.start () vào __ init __, nhưng không phải là self.join (). Điều đó phải được thực hiện sau khi mỗi chủ đề đã được bắt đầu. tham gia () là những gì khiến chủ đề chính chờ đợi chủ đề của bạn kết thúc. Nếu không, chủ đề của bạn tự chạy tất cả. Vì vậy, một cách để nghĩ về tham gia () dưới dạng "giữ" trên luồng chính-nó sắp xếp luồng chủ đề của bạn và thực hiện tuần tự trong luồng chính, trước khi luồng chính có thể tiếp tục. Nó đảm bảo rằng chủ đề của bạn đã hoàn thành trước khi luồng chính di chuyển về phía trước. Lưu ý rằng điều này có nghĩa là ổn nếu chủ đề của bạn đã hoàn tất trước khi bạn gọi Jop () - luồng chính được phát hành ngay lập tức khi tham gia () được gọi. Trên thực tế, bây giờ tôi chỉ xảy ra với tôi rằng chủ đề chính chờ đợi tại D.Join () cho đến khi Thread D kết thúc trước khi nó chuyển sang T.Join (). Trên thực tế, rất rõ ràng, hãy xem xét mã này:
Nó tạo ra đầu ra này (lưu ý cách các câu lệnh in được luồn vào nhau.) 0T1.join () đang giữ luồng chính. Tất cả ba luồng hoàn thành trước khi kết thúc T1.join () và luồng chính di chuyển lên để thực hiện bản in sau đó t2.join () sau đó in sau đó t3.join () sau đó in. Sửa chữa chào mừng. Tôi cũng mới tham gia vào luồng. . Đã trả lời ngày 20 tháng 5 năm 2016 lúc 4:25May 20, 2016 at 4:25
Kiki Jewellkiki JewellKiki Jewell 7967 Huy hiệu bạc4 Huy hiệu đồng7 silver badges4 bronze badges 3 Với tham gia - thông dịch viên sẽ đợi cho đến khi quá trình của bạn được hoàn thành hoặc chấm dứtcompleted or terminated 1không có tham gia - thông dịch viên sẽ không đợi cho đến khi quá trình bị chấm dứt,terminated, 2
Đã trả lời ngày 6 tháng 3 năm 2019 lúc 5:04Mar 6, 2019 at 5:04
Trong python 3.x tham gia () được sử dụng để tham gia một luồng với luồng chính, tức là khi tham gia () được sử dụng cho một luồng cụ thể, luồng chính sẽ ngừng thực thi cho đến khi thực hiện hoàn tất luồng tham gia. 3Đã trả lời ngày 25 tháng 2 năm 2019 lúc 17:50Feb 25, 2019 at 17:50
Ví dụ này chứng minh hành động 6: 4Ngoài: 5Đã trả lời ngày 22 tháng 1 năm 2019 lúc 9:41Jan 22, 2019 at 9:41
Khi tạo chức năng 7 cho cả luồng không phải là Daemon và Daemon, luồng chính (hoặc quy trình chính) sẽ đợi 8 giây, sau đó có thể đi xa hơn để làm việc theo quy trình của chính nó. Trong thời gian chờ đợi 8, cả hai chủ đề trẻ em nên làm những gì chúng có thể làm, chẳng hạn như in ra một số văn bản. Sau 8 giây, nếu chủ đề không phải là Daemon vẫn không hoàn thành công việc của mình, và nó vẫn có thể hoàn thành sau khi quá trình chính hoàn thành công việc của mình, nhưng đối với chủ đề Daemon, nó chỉ bỏ lỡ cửa sổ cơ hội. Tuy nhiên, cuối cùng nó sẽ chết sau khi chương trình Python thoát ra. Xin hãy sửa cho tôi nếu có điều gì đó sai.
Simhumileco 29.1k16 Huy hiệu vàng130 Huy hiệu bạc108 Huy hiệu đồng16 gold badges130 silver badges108 bronze badges Đã trả lời ngày 9 tháng 9 năm 2013 lúc 14:39Sep 9, 2013 at 14:39
user1342336user1342336user1342336 9572 Huy hiệu vàng16 Huy hiệu bạc28 Huy hiệu đồng2 gold badges16 silver badges28 bronze badges Có một vài lý do để luồng chính (hoặc bất kỳ luồng nào khác) tham gia các luồng khác
Nếu một chương trình Python không tham gia các chủ đề khác, trình thông dịch Python vẫn sẽ tham gia các chủ đề không phải là Daemon thay mặt. Đã trả lời ngày 16 tháng 1 năm 2020 lúc 8:04Jan 16, 2020 at 8:04
Yoorghmyoorghmyoonghm 3.6041 Huy hiệu vàng 30 Huy hiệu bạc46 Huy hiệu Đồng1 gold badge30 silver badges46 bronze badges Có vẻ như sự khác biệt giữa xử lý đồng bộ và không đồng bộ được hiểu sai ở đây. Một chủ đề có nghĩa là để thực hiện một thủ thuật phụ, hầu hết các lần theo kiểu "song song" hoặc "đồng thời" (phụ thuộc vào việc thiết bị có đa bộ xử lý hay không). Nhưng, điểm nào về đồng thời? Đối với hầu hết các phần, đó là về việc cải thiện hiệu suất của một quy trình, bằng cách áp dụng ý tưởng "phân chia và chinh phục". Có một số luồng (quy trình phụ) thực hiện đồng thời "phần" của toàn bộ quá trình, và sau đó có bước "cuối cùng" trong đó tất cả các kết quả của quy trình phụ được kết hợp (tham gia; do đó phương thức "tham gia"). Tất nhiên, để đạt được mức tăng như vậy về hiệu quả, các phần được chia thành các luồng, phải là "loại trừ lẫn nhau" (nghĩa là, chúng không chia sẻ các giá trị được cập nhật ... - được gọi là tính toán song song là "quan trọng tiết diện" -- ). Nếu có ít nhất một giá trị được cập nhật bởi hai hoặc nhiều luồng, thì người ta phải đợi cái kia "hoàn thành" bản cập nhật của nó, nếu không thì có được kết quả không nhất quán (tức là hai người sở hữu tài khoản ngân hàng có ý định rút số tiền nhất định Tiền trong ATM ... nếu không có cơ chế thích hợp "khóa" hoặc "bảo vệ" số dư "biến đổi" trong cả hai thiết bị ATM, việc rút tiền sẽ hoàn toàn tăng giá trị cuối cùng của số dư, gây ra Rõ ràng vấn đề tài chính nghiêm trọng đối với chủ tài khoản). Vì vậy, trở lại với mục đích của một chủ đề trong điện toán song song: có tất cả các luồng thực hiện phần riêng lẻ của chúng và sử dụng "tham gia" để biến chúng "quay lại" toàn cầu một. Ví dụ? Một nhóm trong số họ, nhưng chúng ta hãy liệt kê một vài người được giải thích rõ ràng:
Vì vậy, việc sử dụng "tham gia" trong Python (hoặc nó tương đương với các ngôn ngữ "đồng thời" khác) có một ý nghĩa quan trọng; Nhưng phụ thuộc rất nhiều vào việc tìm hiểu những gì mà anh ấy muốn "paralellize" và cách anh ấy có kỹ năng trong việc chia thuật toán theo đúng bước để được song song so với những bước cần được giữ trong quy trình chính. Đó là một vấn đề của suy nghĩ "logic" hơn là một chương trình "chống lại một mẫu". Đã trả lời ngày 26 tháng 9 lúc 21:25Sep 26 at 21:25
Vì vậy, với 3 và ________ 45 (chủ đề daemon) bên dưới (daemon là 6 theo mặc định): 3 and 5(daemon threads) below (daemon is 6 by default): 6Hoặc, với 3 và ________ 48 (chủ đề không phải là Daemon) bên dưới: 3 and 8(non-daemon threads) below: 7
8Và, nếu không sử dụng 3 và nếu ____ 45 (chủ đề không phải là Daemon) bên dưới: 3 and if 5(non-daemon threads) below: 9
0Và, nếu không sử dụng 3 và nếu ____ 48 (chủ đề daemon) bên dưới: 3 and if 8(daemon threads) below: 1
2Đã trả lời ngày 27 tháng 10 lúc 7:10Oct 27 at 7:10
Kai - Kazuya Itokai - Kazuya ItoKai - Kazuya Ito Huy hiệu vàng 11.8K672 Huy hiệu bạc91 Huy hiệu đồng6 gold badges72 silver badges91 bronze badges "Việc sử dụng sử dụng tham gia () là gì?" bạn nói. Thực sự, đó là câu trả lời tương tự như "Việc sử dụng các tệp đóng là gì, vì Python và HĐH sẽ đóng tệp của tôi cho tôi khi chương trình của tôi thoát ra?". Đó chỉ đơn giản là vấn đề lập trình tốt. Bạn nên tham gia () các luồng của bạn tại điểm trong mã mà luồng không nên chạy nữa, vì bạn phải tích cực đảm bảo luồng không chạy để can thiệp vào mã của riêng bạn hoặc bạn muốn hành xử chính xác trong một hệ thống lớn hơn. Bạn có thể nói "Tôi không muốn mã của mình trì hoãn việc đưa ra câu trả lời" chỉ vì thời gian bổ sung mà tham gia () có thể yêu cầu. Điều này có thể hoàn toàn có giá trị trong một số kịch bản, nhưng bây giờ bạn cần tính đến rằng mã của bạn là "để Cruft xung quanh để Python và HĐH dọn dẹp". Nếu bạn làm điều này vì lý do hiệu suất, tôi rất khuyến khích bạn ghi lại hành vi đó. Điều này đặc biệt đúng nếu bạn đang xây dựng một thư viện/gói mà những người khác dự kiến sẽ sử dụng. Không có lý do gì để không tham gia (), ngoài lý do hiệu suất và tôi sẽ lập luận rằng mã của bạn không cần phải thực hiện tốt điều đó. Đã trả lời ngày 19 tháng 12 năm 2013 lúc 23:05Dec 19, 2013 at 23:05
Chris Cogdonchris CogdonChris Cogdon 7.0635 Huy hiệu vàng37 Huy hiệu bạc 30 Huy hiệu Đồng5 gold badges37 silver badges30 bronze badges 5 Chúng ta có thể tham gia hai chủ đề không?Lớp luồng cung cấp phương thức tham gia () cho phép một luồng đợi cho đến khi một luồng khác hoàn thành việc thực thi của nó. Nếu t là một đối tượng chủ đề có chủ đề hiện đang thực thi, thì t. tham gia () sẽ đảm bảo rằng t bị chấm dứt trước khi hướng dẫn tiếp theo được thực thi bởi chương trình.. If t is a Thread object whose thread is currently executing, then t. join() will make sure that t is terminated before the next instruction is executed by the program.
Chủ đề tham gia () trong luồng là gì?Tham gia là một phương thức đồng bộ hóa chặn luồng gọi (nghĩa là luồng gọi phương thức) cho đến khi luồng có phương thức nối được gọi là đã hoàn thành.Sử dụng phương pháp này để đảm bảo rằng một luồng đã bị chấm dứt.Người gọi sẽ chặn vô thời hạn nếu luồng không chấm dứt.a synchronization method that blocks the calling thread (that is, the thread that calls the method) until the thread whose Join method is called has completed. Use this method to ensure that a thread has been terminated. The caller will block indefinitely if the thread does not terminate.
Bạn có thể đa chủ đề trong Python?Python không hỗ trợ đa luồng vì Python trên trình thông dịch Cpython không hỗ trợ thực thi đa lõi thực sự thông qua đa luồng.Tuy nhiên, Python có một thư viện luồng.Gil không ngăn chặn luồng. because Python on the Cpython interpreter does not support true multi-core execution via multithreading. However, Python does have a threading library. The GIL does not prevent threading.
Phương thức tham gia () nào?Phương thức tham gia trong Java cho phép một luồng đợi cho đến khi một luồng khác hoàn thành việc thực thi.Nói một cách đơn giản hơn, nó có nghĩa là nó chờ đợi các chủ đề khác chết.Nó có một loại khoảng trống và ném gián đoạn.allows one thread to wait until another thread completes its execution. In simpler words, it means it waits for the other thread to die. It has a void type and throws InterruptedException. |