Các tính năng đồng thời và song song đã thay đổi hoàn toàn cục diện của các ứng dụng phần mềm. Xu hướng phổ biến trong các tổ chức lớn hơn là thiết kế một ứng dụng cấp doanh nghiệp đồng thời và song song. Do đó, điều quan trọng là phải hiểu cách thức hoạt động của đồng thời và song song. Mục đích duy nhất của bài viết này là cung cấp một hướng dẫn rõ ràng và ngắn gọn về cách thức và thời điểm sử dụng đồng thời và song song trong Python… Show
Các hệ thống hiện đại có nhiều lõi CPU. Các chương trình hiện đại cần mở rộng quy mô. Có lẽ bạn đã nghĩ rằng các tập lệnh và chương trình của bạn không sử dụng hết phần cứng của bạn Có lẽ bạn cần tìm hiểu thêm về Python concurrency Tôi đã tạo hướng dẫn này cho bạn. Chào mừng
Hãy đi sâu vào Mục lục
Tại sao nên học Python đồng thời?Câu hỏi đầu tiên cần trả lời là “tại sao”
Đầu tiên là vì nếu bạn không thể phát triển một câu trả lời chắc chắn, thì bạn có thể tiếp tục. Nó làm cho các câu hỏi khác ít liên quan hơn, có lẽ không liên quan Có hai lý do chính khiến bạn học Python đồng thời, đó là
Cuối cùng, bạn muốn học Python đồng thời để có được công việc tốt hơn hoặc để đạt được sự hài lòng hơn trong công việc Cuối cùng, bạn cần học Python đồng thời để giữ công việc của mình và được trả tiền Có nhiều bước giữa những mong muốn này và kết quả Sơ đồ dưới đây cố gắng nắm bắt hai cơ sở hợp lý này Nếu bạn cần hoặc muốn học Python đồng thời, ít nhất bạn biết mình đang đứng ở đâu. Có thể hữu ích nếu làm rõ nhu cầu này với nhiều chi tiết hơn và tạo động lực để bạn bắt đầu Vấn đề lớn hơn là hầu hết (tất cả. ) Các nhà phát triển Python cần học Python concurrency và chưa biết sự thật này Có thể bạn tò mò về các luồng, quy trình và/hoặc coroutine của Python, nhưng bạn không thực sự muốn tìm hiểu về chúng, ít nhất là chưa Tôi hy vọng rằng hướng dẫn này sẽ giúp thúc đẩy bạn thay đổi suy nghĩ của mình Nhưng trước khi đi sâu vào những lý do này, chúng ta hãy tìm hiểu sơ qua về Python concurrency chính xác là gì Đồng thời Python là gìĐồng thời Python đề cập đến một bộ khả năng được cung cấp bởi các mô-đun Python cụ thể và trong một số trường hợp (các coroutine) chính ngôn ngữ Python Các khả năng không được cung cấp bởi các phương tiện khác và phải thực hiện với việc thực thi mã đồng thời, không đồng bộ và/hoặc song song Các khả năng này được triển khai trong các mô-đun Python cụ thể trong thư viện chuẩn, chẳng hạn như các mô-đun “threading“, “multiprocessing“ và “asyncio” Hãy xem nhanh các khả năng và chi tiết triển khai của Python concurrency trước khi đi sâu vào lý do tại sao chúng ta nên tìm hiểu chúng Khả năng tương tranh của PythonĐồng thời Python mở khóa các khả năng không được cung cấp bởi các cấu trúc lập trình khác, hoặc ít nhất, không dễ dàng như vậy Đồng thời đề cập đến một loại lập trình khác. Đó là một mô hình khác trực giao hoặc được phủ lên trên các mô hình lập trình điển hình của chúng ta như lập trình thủ tục, lập trình chức năng hoặc lập trình hướng đối tượng, tất cả chúng ta có thể sử dụng trong Python Đồng thời, được quan niệm rộng rãi, mang lại ba khả năng mới, đó là
Chúng khác nhau nhưng có liên quan Thực hiện đồng thờiThực thi đồng thời là điều kiện tiên quyết để thực thi song song và không đồng bộ Đồng thời có nghĩa là các phần của chương trình có thể không theo thứ tự hoặc trùng lặp theo một cách nào đó Giống như các chức năng cho phép một chương trình dài được chia thành các phần riêng biệt và được sử dụng lại. Một nguyên tử thực thi đồng thời, như lambda, hàm hoặc phương thức, có thể được thực thi tại một số thời điểm có khả năng trùng lặp với một nguyên tử thực thi đồng thời khác Điều đó không có nghĩa là việc thực hiện “sẽ” không đúng thứ tự hoặc sẽ trùng lặp với nhau, chỉ có nghĩa là nó “có thể” Ví dụ: chúng tôi có thể đọc đồng thời từ 3 tệp. Có một quy định rằng các nhiệm vụ là riêng biệt và mỗi nhiệm vụ có thể xảy ra vào một thời điểm tùy ý, mặc dù có nhiều cách để đạt được điều này Các tệp có thể được đọc từng chút một trong vòng tròn cho đến khi hoàn thành. Chúng có thể được đọc song song (thảo luận tiếp theo), chúng có thể được đọc không đồng bộ và người gọi có thể kiểm tra kết quả sau
Thực thi đồng thời tạo điều kiện cho các chi tiết triển khai "đồng thời", giống như các chương trình con tạo điều kiện tái sử dụng. Các chi tiết như ưu tiên đa nhiệm, đa nhiệm hợp tác và thực thi song song Hãy xem một sơ đồ có thể làm cho việc thực thi đồng thời rõ ràng hơn Sơ đồ cho thấy việc thực hiện đồng thời ba tác vụ. Thời gian thực hiện các tác vụ bắt đầu từ đầu biểu đồ và di chuyển xuống dưới, từng bước một Chúng ta có thể thấy rằng trong trường hợp này, mặc dù cả ba tác vụ đều được thực hiện đồng thời, nhưng thực tế chỉ có một tác vụ được thực thi tại một thời điểm. Tuy nhiên, tất cả họ đều tiến bộ Thực thi song songThực hiện song song có nghĩa là được thực hiện cùng một lúc Nó có nghĩa là thực hiện đồng thời các nguyên tử thực hiện đồng thời, được mô tả trước đây Nếu thực thi đồng thời là khả năng, thì thực thi song song là phương tiện Như vậy, thực thi song song thường là một chức năng của tính song song của phần cứng bên dưới. Điều này có thể có nghĩa là nhiều GPU hoặc CPU, nhiều lõi trên mỗi CPU, nhiều máy, v.v.
Song song thường là ý nghĩa khi mô tả đồng thời python một cách ngẫu nhiên, e. g. rằng chúng tôi muốn mọi thứ xảy ra cùng một lúc Trong thực tế, tính song song cho phép sử dụng toàn bộ hoặc toàn bộ phần cứng cơ bản. Điều này có nghĩa là chúng tôi có thể chạy trên tất cả các CPU hoặc tất cả các lõi, thay vì một Nó có thể có nghĩa là một loạt các nhiệm vụ tuần tự có thể được hoàn thành trong khoảng thời gian cần thiết để hoàn thành một nhiệm vụ, mang lại khả năng tăng tốc và lần lượt là khả năng mở rộng của chương trình Hãy xem một sơ đồ có thể làm cho việc thực thi song song rõ ràng hơn Sơ đồ cho thấy việc thực hiện song song ba tác vụ. Thời gian thực hiện các tác vụ bắt đầu từ đầu biểu đồ và di chuyển xuống dưới, từng bước một Chúng ta có thể thấy rằng cả ba nhiệm vụ được bắt đầu đồng thời, đồng thời. Trong trường hợp này, chúng ta có thể thấy rằng mỗi tác vụ có thể thực hiện từng bước thời gian, cho phép tất cả các tác vụ thực hiện đồng thời Thực thi không đồng bộThực thi không đồng bộ có nghĩa là không đồng thời, đ. g. một thời gian sau Nó có thể song song. Có thể là khi có đủ nguồn lực. Có thể là khi có thời gian. Đó có thể là khi chúng tôi chọn tạm dừng và cho phép nó
Thực thi không đồng bộ tạo điều kiện cho một phong cách lập trình mới, được gọi là lập trình không đồng bộ Các nhiệm vụ và lệnh gọi chức năng có thể được gửi đi và kết quả được xử lý sau, theo yêu cầu. Các sự kiện bên ngoài có thể kích hoạt việc thực thi các chức năng theo yêu cầu. Đổi lại, điều này có thể yêu cầu ít tài nguyên hơn và do đó, hỗ trợ nhiều tác vụ đồng thời hơn đáng kể Cách tiếp cận này là phổ biến nhất khi sử dụng non-blocking I/O Hãy xem một sơ đồ có thể làm cho việc thực thi không đồng bộ trở nên rõ ràng hơn Sơ đồ cho thấy việc thực hiện không đồng bộ ba tác vụ. Thời gian thực hiện các tác vụ bắt đầu từ đầu biểu đồ và di chuyển xuống dưới, từng bước một Một nhiệm vụ được bắt đầu và sau đó lên lịch cho nhiệm vụ thứ hai. Nhiệm vụ đầu tiên tiếp tục trong giây lát. Nhiệm vụ thứ hai sau đó được tạo cơ hội để thực hiện và lên lịch cho nhiệm vụ thứ ba. Nhiệm vụ thứ ba sau đó chạy và hoàn thành. Nhiệm vụ thứ hai hoàn thành và nhiệm vụ đầu tiên chạy lâu hơn một chút Tất cả ba tác vụ được thực hiện đồng thời, mặc dù theo cách khác với những gì chúng ta đã thấy trước đây Lợi ích của đồng thời PythonCác tính năng hoặc khả năng cấp cao hơn của việc thực thi đồng thời, song song và không đồng bộ cho phép các lợi ích cụ thể, chẳng hạn như
Khi chúng tôi nghĩ về đồng thời, chúng tôi nghĩ về các kết quả như được liệt kê ở trên
Ngoài ra còn có những lợi ích ít hữu hình khác, chẳng hạn như
Điểm cuối cùng này về việc giải quyết các vấn đề mới là một vấn đề lớn Ví dụ: đồng thời cho phép các chương trình thực hiện những việc mà chúng không thể đạt được bằng cách khác, ít nhất là không phải nếu không có những nỗ lực đáng kể, chẳng hạn như
Đây là những lợi ích cấp thấp hơn mà chúng ta có thể bắt đầu sử dụng trực tiếp khi đưa đồng thời vào các dự án lập trình Python của mình Đây là một chuyến tham quan rất nhanh về các lợi ích của đồng thời Python, đồng thời thực sự nói chung hơn Sơ đồ dưới đây thực hiện một nỗ lực vụng về trong việc tóm tắt những khả năng và lợi ích hoặc kết quả này. Nó có giúp ích gì không? Đồng thời Python trong Thư viện tiêu chuẩnĐồng thời Python có sẵn trong Python thông qua ba mô-đun chính trong thư viện chuẩn, chúng là
Có những mô-đun khác bổ sung cho những mô-đun này, nhưng ba mô-đun này là trung tâm của các khả năng đồng thời của Python Mô-đun luồng cho phép tạo và quản lý các luồng hệ điều hành bằng cách sử dụng các đối tượng và hàm Python. Các luồng thường được sử dụng cho các tác vụ liên kết với IO như đọc và ghi từ ổ cắm, tệp và thiết bị Mô-đun đa xử lý cho phép chúng tôi tạo và quản lý các quy trình cấp hệ điều hành. Các quy trình thường được sử dụng cho các tác vụ liên quan đến CPU Mô-đun asyncio cho phép chúng tôi tạo và quản lý các coroutine cấp phần mềm. Các coroutine được sử dụng chủ yếu cho non-blocking sub process và socket I/O, mặc dù có thể được sử dụng rộng rãi hơn cho lập trình không đồng bộ với các hoạt động liên kết với IO và CPU bằng cách gửi các tác vụ tới các luồng và quy trình Ngoài ra còn có nhiều thư viện của bên thứ ba thay thế, tăng cường và thêm chức năng trên các mô-đun này Có lẽ phổ biến nhất và/hoặc được sử dụng rộng rãi (xếp hạng dựa trên số sao GitHub) bao gồm
Bây giờ chúng ta đã có một số ý tưởng về Python concurrency là gì, hãy xem xét lý do tại sao chúng ta nên tìm hiểu nó Bạn Cần hoặc Muốn Đồng thời PythonCó một cách dễ dàng để nghĩ về Python đồng thời Bạn cần phải học nó, hoặc bạn muốn học nó Tôi sẽ, và sẽ, lập luận rằng tất cả các nhà phát triển Python cần học nó. Có những điều bạn có thể làm với đồng thời Python mà bạn không thể làm hoặc không thể thực hiện dễ dàng nếu không có nó Tuy nhiên, phân tích “cần” so với “muốn” là một nơi tuyệt vời để bắt đầu Từ cấp độ cao, bạn cần học Python concurrency hoặc học nó tốt hơn vì công việc của bạn, e. g. mức lương thanh toán các hóa đơn của bạn Bạn có thể muốn học Python concurrency vì nhiều lý do, mặc dù chủ yếu là để cải thiện sự hài lòng trong công việc của bạn với tư cách là nhà phát triển Python. Con đường này có thể ít rõ ràng hơn trên bề mặt, nhưng chúng tôi sẽ đào sâu vào nó
Tiếp theo, chúng ta sẽ xem xét kỹ hơn từng khía cạnh này Cần đồng thời PythonBạn cần học Python concurrency ngay bây giờ vì công việc của bạn Có lẽ có hai lý do chính đây có thể là trường hợp
Trong những trường hợp này, học Python đồng thời không thực sự là một lựa chọn. Đó là một nhu cầu, không phải là một muốn Bạn phải học nó để làm công việc của bạn, và được trả tiền Sơ đồ dưới đây thực hiện một nỗ lực vụng về trong việc tóm tắt lập luận này. Nó có giúp ích gì không? Nếu bạn đang trong trường hợp này, hãy gửi cho tôi một tin nhắn. tôi muốn nghe nhiều hơn Chúng ta hãy xem xét kỹ hơn từng Đáp ứng yêu cầu cho dự án mớiBạn đang bắt đầu hoặc tham gia một dự án Python mới Đây có thể là phần mềm hoàn toàn mới (greenfield) hoặc bổ sung các chức năng chính cho phần mềm hiện có (brownfield) Dự án có các yêu cầu và một hoặc nhiều yêu cầu phù hợp với khả năng của đồng thời Python Ví dụ: có thể đó là khả năng đồng thời Python cấp cao, chẳng hạn như
Có lẽ một kỹ sư trưởng hoặc kiến trúc sư đã chọn trước một cách tiếp cận liên quan đến đồng thời Đây có thể là việc sử dụng các luồng, quy trình hoặc coroutine Nó có thể là một mô hình lập trình được chọn trước, chẳng hạn như lập trình không đồng bộ, lập trình dựa trên diễn viên, v.v. Đồng thời Python không nên được thêm vào một dự án, nó nên được thêm vào để đáp ứng yêu cầu của người dùng hoặc bên liên quan cụ thể. Tuy nhiên, đôi khi đây không phải là trường hợp Tệ hơn nữa, chúng tôi có thể không biết về các yêu cầu cho đến khi phần mềm được viết Ví dụ
Đột nhiên, chúng tôi có một yêu cầu phi chức năng mới chỉ có thể được đáp ứng một cách hợp lý bằng cách sử dụng các phương thức tương tranh Những lần khác, trưởng dự án hoặc một bên liên quan “chỉ muốn sử dụng nó“. Một yêu cầu ít bảo vệ hơn, nhưng dù sao cũng là một yêu cầu Đủ công bằng. Tất cả chúng ta đã ở đó. Có lẽ đó là cách chúng tôi học hầu hết các API mà chúng tôi biết. Đó là một cách tuyệt vời để luôn cập nhật, mặc dù nó có thể để lại dấu vết của nợ kỹ thuật Bất kể lý do là gì, bạn cần học Python concurrency ngay bây giờ bởi vì nếu không có kiến thức về nó, bạn không thể hoàn thành vai trò của mình trong dự án và giữ được công việc của mình Duy trì một dự án hiện tạiBạn đang làm việc trên một dự án hiện có Phần mềm sử dụng đồng thời Python và đã có một thời gian Ví dụ
Vai trò của bạn là duy trì phần mềm này Điều này sẽ liên quan đến nhiều trách nhiệm, chẳng hạn như
Vai trò của bạn có thể mới hoặc không. Bạn có thể đang bắt đầu một vai trò mới với phần mềm sử dụng đồng thời này. Ngoài ra, bạn có thể đã đảm nhiệm vai trò này một thời gian và bạn đã không chạm vào các phần đồng thời của phần mềm Một trong những tình huống phổ biến hơn khi bảo trì phần mềm là xử lý các yêu cầu phi chức năng, chẳng hạn như
Những yêu cầu này có thể có nghĩa là bạn phải mang tính đồng thời Python một lần nữa vào dự án của mình Bất kể lý do là gì, bạn phải học Python concurrency ngay bây giờ để hoàn thành trách nhiệm bảo trì phần mềm của mình, nếu không, cuối cùng bạn sẽ không thể giữ được công việc của mình Muốn đồng thời PythonBạn muốn học Python concurrency Có thể bạn không thể hiểu chính xác lý do tại sao, nhưng bạn biết đó là điều bạn muốn học Bạn không cô đơn. Nhiều nhà phát triển đến với Python concurrency từ hướng này Sau khi nói chuyện với nhiều nhà phát triển và suy nghĩ kỹ về điều đó, tôi nghĩ rằng điều đó phụ thuộc vào “sự hài lòng trong công việc“ Cuối cùng, bạn muốn cảm thấy hài lòng về công việc mình làm và “đồng thời Python” là một bước trên con đường này Ví dụ
Có rất nhiều mô liên kết giữa cảm giác hài lòng về công việc của bạn với tư cách là nhà phát triển Python và việc đạt được kỹ năng xử lý đồng thời Python Sơ đồ dưới đây thực hiện một nỗ lực vụng về trong việc tóm tắt lập luận này. Nó có giúp ích gì không? Điều này mô tả bạn? Hãy tìm hiểu sâu hơn về vấn đề này Bạn muốn trở thành một nhà phát triển Python tốt hơnTrở thành một nhà phát triển tốt hơn là một khái niệm mơ hồ Nói chung, điều đó có nghĩa là cải thiện kỹ năng trở thành nhà phát triển Python. Một phần rất lớn của điều này là ý tưởng học tập liên tục Bạn cần học hỏi nhiều hơn và những cách tốt hơn để giải quyết vấn đề Đồng thời Python mở khóa các khả năng độc đáo và khác biệt để giải quyết vấn đề trong các chương trình Python, chẳng hạn như các chương trình được mô tả ở trên Học đồng thời sẽ giúp bạn trở thành một lập trình viên Python giỏi hơn Ví dụ
Trên thực tế, hầu hết các tài nguyên bên ngoài mà chúng ta tương tác trong các chương trình của mình đều đồng thời một cách tự nhiên. Điều này bao gồm ổ cứng, máy chủ web, máy chủ cơ sở dữ liệu, v.v. Việc viết các chương trình tuần tự để tương tác với các tài nguyên này đang hạn chế tiềm năng của các chương trình đó Bạn cần học Python đồng thời để trở thành nhà phát triển Python giỏi hơn xen vàoTôi đã học lập trình đồng thời ban đầu để trở thành một nhà phát triển tốt hơn Đó là một mớ hỗn độn và tôi đã viết rất nhiều mã rác. Tuy nhiên, tôi muốn mã nhanh hơn và nhận được nó. Tôi nhớ đã viết một số GUI Java đa luồng để truy vấn nhiều máy chủ trò chơi cùng một lúc và một số khác để tải xuống nhiều tệp HTML từ máy chủ nhanh nhất có thể. Họ đã làm việc và họ đã được đa luồng. Nhưng họ đã không nguyên tắc Sau đó, tôi đã tham gia một khóa học đại học và học đồng thời một cách có hệ thống (tôi nghĩ là một khóa học ban đêm, như một phần của bằng Thạc sĩ của tôi, nhưng đó là hơn 20 năm trước). Nó được dạy thực tế với các ví dụ mã và rất ít lý thuyết trừu tượng. Xin tri ân giảng viên trẻ cuối những năm 2000 Sau đó, tôi đã học cách sử dụng đồng thời trong bộ ngôn ngữ mà tôi đang sử dụng vào thời điểm đó, đặc biệt là Java, ngôn ngữ tôi đang sử dụng trong công việc hàng ngày của mình Trong vòng vài tuần, tôi tình cờ tham gia một dự án để lập tài liệu và duy trì một khung công tác đa luồng Java nội bộ tại nơi làm việc Tôi PHẢI biết đồng thời để đảm nhận vai trò. Tôi thậm chí có thể đã giơ tay cho nó. tôi không nhớ Mặc dù tôi còn non nớt, nhưng tôi còn trẻ, nhiệt tình và cố gắng tìm ra những lỗi tồn tại lâu dài trong mã như một phần công việc của mình. Tôi tin rằng đã tìm thấy chúng vì thực tế là tôi còn xanh và đã nghiên cứu các quy tắc cũng như các phương pháp hay nhất gần đây Tôi đoán tôi muốn trở thành một nhà phát triển giỏi hơn để tôi có thể làm việc với nhiều dự án thú vị hơn tại nơi làm việc. Không phải GUI khác, mà là một số hệ thống có thể mở rộng phía sau hoặc phía máy chủ. Một vài thứ thú vị Và đó là những gì tôi nhận được. Và sau đó, vài Nền tảng vững chắc về lập trình đồng thời đã phục vụ tôi trong suốt sự nghiệp lập trình của mình, đặc biệt là trong thập kỷ qua khi tôi tập trung vào Python để học máy Bạn muốn có nhiều dự án thú vị hơnSử dụng Python là một niềm vui, nhưng viết chương trình Python là chưa đủ Chúng tôi muốn làm việc trên các dự án thú vị Dự án thú vị nhất không chỉ sử dụng đồng thời mà còn yêu cầu nó Ví dụ
Ở đây, thú vị có nghĩa là "thú vị về mặt kỹ thuật", trái ngược với một ứng dụng CRUD tiêu chuẩn khác Làm việc trên các dự án thú vị hơn đòi hỏi phải có kỹ năng và khả năng làm việc trên các dự án đó Một kỹ năng nền tảng cho các dự án thú vị về mặt kỹ thuật là đồng thời Đó là một khả năng mà nhiều khả năng khác xây dựng dựa trên Bạn cần học đồng thời Python để làm việc trên các dự án thú vị hơn Bạn muốn có một công việc mớiMột tình huống phổ biến hiện nay là các nhà phát triển Python chuyển đi hoặc muốn chuyển sang vai trò mới Ví dụ
Đồng thời Python là một kỹ thuật quan trọng trong các chương trình phụ trợ, phía máy chủ và khoa học dữ liệu Cái cuối cùng này rất phổ biến do sự phát triển của trí tuệ nhân tạo và máy học trong thập kỷ qua Lý do là các chương trình chạy trong các môi trường này có các yêu cầu mạnh mẽ về tính kịp thời và khả năng mở rộng. Họ cần phải nhanh và sử dụng hiệu quả phần cứng sẵn có Đồng thời Python là bắt buộc nếu bạn muốn một công việc mới theo bất kỳ hướng phổ biến nào sau đây Kiểm tra bất kỳ bảng công việc nào để biết các vai trò của nhà phát triển Python về kỹ thuật, phụ trợ, phía máy chủ và khoa học dữ liệu và việc làm quen với tính tương tranh của Python là một yêu cầu bắt buộc, rõ ràng hoặc ngầm định Bạn rất có thể cần phải học Python đồng thời để tìm một công việc mới Bây giờ chúng ta đã xem xét lý do tại sao một số nhà phát triển Python cần và muốn tìm hiểu về tính đồng thời của Python, hãy tiến thêm một bước nữa Tất cả các nhà phát triển Python cần học đồng thờiĐiều này có thể khiến tôi gặp rắc rối Tôi nghĩ rằng tất cả các nhà phát triển Python cần học đồng thời Đừng la hét. Hãy để tôi giải thích
Đồng thời là khả năng hạng nhất dành cho nhà phát triển Python hiện đại Nó ở trên đó với các khả năng hạng nhất khác như
Có vô số khả năng mà một chương trình Python có thể yêu cầu. Sơ đồ bên dưới thực hiện một nỗ lực vụng về trong việc liệt kê chỉ một vài trong số chúng với độ khó tăng dần và cho thấy nơi có thể phù hợp với đồng thời. Nó có giúp ích gì không? Đồng thời Python, giống như các khả năng trên, không bắt buộc về mặt kỹ thuật để giải quyết các vấn đề trong Python Bạn có thể viết mã thủ tục cho mọi thứ với khả năng trừu tượng hóa và tái sử dụng hạn chế, nhưng bạn sẽ để lại nhiều đòn bẩy trên bàn một cách không cần thiết Điều tương tự cũng áp dụng cho đồng thời Python Là một lập trình viên, bạn sẽ có quyền truy cập vào các khả năng hỗ trợ đồng thời. Tất cả những khả năng tôi đã liệt kê ở trên trong phần trước. Tóm lại
Phương án thay thế là gì?
Sự thay thế là gì?
Phương án thay thế là gì? Biết cách tạo và sử dụng các luồng, quy trình và coroutine phải có trong hộp công cụ của nhà phát triển Python hiện đại Nó phải là một phần của chương trình đào tạo các nhà phát triển Python Bạn phải học đồng thời Python Được rồi, hãy để tôi chạm vào một số phản đối của bạn Nhưng Còn Về…Đồng thời rất nguy hiểm. Điều kiện cuộc đua và bế tắc. Việc thêm chủ đề khiến mọi thứ trở nên tồi tệ hơn. Python không hỗ trợ các luồng thực hoặc đồng thời do GIL. Tất cả các công cụ trong hộp công cụ của lập trình viên đều có thể nguy hiểm Tất cả đều cần được đào tạo và thực hành cẩn thận Đồng thời Python không khác Ngoài ra, bạn không cần phải đi sâu. Bạn cần tìm hiểu API và cách thức/thời điểm sử dụng nó Giống như
Tương tự
Các mẫu, quy tắc và phương pháp hay nhất sẽ đưa bạn đi hết con đường trong hầu hết thời gian, giống như trong những trường hợp khác Có lẽ tôi đã xác định rằng bạn cần học Python đồng thời, nếu vậy, hãy đảm bảo rằng bạn học nó đúng cách. Có lẽ giống như cách bạn học các kỹ năng lập trình khác của mình Tài nguyênTôi giúp các nhà phát triển Python học đồng thời Trên thực tế, đó là tất cả những gì tôi làm vào lúc này. Nó giống như sứ mệnh của tôi trong tương lai gần Bạn có thể đọc hơn 300 hướng dẫn miễn phí về xử lý đồng thời Python được tổ chức thành các lộ trình học tập tại đây
Tôi thêm các hướng dẫn mới mọi lúc, mọi ngày vào lúc này Bạn có thể đọc hướng dẫn khổng lồ (hơn 25.000 từ) miễn phí của tôi về đồng thời Python tại đây
Tôi khuyên bạn nên bắt đầu với
Tôi hy vọng những tài nguyên miễn phí này sẽ giúp mang điĐồng thời Python đã là một phần của thư viện tiêu chuẩn từ lâu Chủ đề đã ở đó cho các lứa tuổi. Đa xử lý kể từ Python 2. 3/6. 0, Đồng bộ kể từ 3. 5. Đó là năm 2022 tại thời điểm viết bài và chúng tôi đang đá khoảng 3. 10 và gõ vào 3. 11 sớm Python có tốt cho đa luồng không?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 không có thư viện luồng. GIL không ngăn luồng.
Ngôn ngữ nào là tốt nhất cho đồng thời?Haskell, Clojure và Elixir/Erlang đặc biệt phù hợp với lập trình đồng thời vì chúng có các quy tắc nghiêm ngặt quản lý nơi có thể xảy ra đột biến, khiến việc vô tình tạo ra một sự thay đổi trở nên khó khăn hơn. .
Python xử lý đồng thời như thế nào?Định nghĩa đồng thời trong từ điển là sự xuất hiện đồng thời. Trong Python, những thứ xảy ra đồng thời được gọi bằng các tên khác nhau (luồng, tác vụ, quy trình) nhưng ở cấp độ cao, chúng đều đề cập đến một chuỗi các lệnh chạy theo thứ tự . . . . . . . . . . . . . . . . . . . . .
Tại sao Python không đồng thời?Đồng thời dựa trên luồng trong Python bị hạn chế. Chỉ có một luồng duy nhất có thể thực thi tại một thời điểm. Đây là do Khóa phiên dịch toàn cầu hoặc GIL yêu cầu mỗi luồng phải có khóa trên trình thông dịch trước khi thực thi, ngăn tất cả các luồng khác thực thi cùng lúc. |