Chức năng gọi Python mà không cần chờ trả về
Chúng tôi sử dụng cookie để cải thiện trải nghiệm duyệt web của bạn trên trang web của chúng tôi, để hiển thị cho bạn nội dung được cá nhân hóa và để phân tích lưu lượng truy cập trang web của chúng tôi. Bằng cách duyệt trang web của chúng tôi, bạn đồng ý với việc chúng tôi sử dụng cookie. Đọc chính sách bảo mật Show
Đăng ký để cập nhật công nghệ mới nhấtKhông thư rác. Chỉ những hiểu biết của chuyên gia Tôi đồng ý với Chính sách quyền riêng tư của Velotio Cảm ơn. Bạn đã được đăng ký Ối. Đã xảy ra lỗi khi gửi biểu mẫu X Velotio Technologies mua lại Media Magic Technologies để mở rộng khả năng kỹ thuật Di động và Truyền thông. Tìm hiểu thêm về việc mua lại và các kế hoạch tương lai của chúng tôi tại đây Đọc thêmDịch vụ Theo mô hình tương tácĐội kỹ thuật từ xa Thuê các nhà phát triển từ xa (được quản lý & tại một địa điểm) Phát triển sản phẩm hoàn chỉnh Đưa sản phẩm của bạn từ ý tưởng đến MVP và đạt được quy mô Gia công chiến lược Thiết lập trung tâm kỹ thuật ngoài khơi của bạn ở Ấn Độ với mô hình BOT rủi ro thấp Theo giai đoạn công tyGiai đoạn đầu Xây dựng MVP hoặc sản phẩm sẵn sàng ra mắt Sự phát triển cao Mở rộng quy mô nỗ lực kỹ thuật của bạn. thuê nhanh hơn Tại sao Velotio?
chuyên môn Kỹ thuật sản phẩmThiết kế UI/UX Sản phẩm thủ công với trải nghiệm người dùng tuyệt vời phát triển phản ứng Các ứng dụng React nhanh và nhạy được xây dựng bằng các công nghệ mới nhất Phần cuối / Phần mềm trung gian Hệ thống phụ trợ cấp doanh nghiệp mở rộng quy mô Phát triển ứng dụng di động Ứng dụng di động gốc và lai chất lượng cao dành cho doanh nghiệp mới thành lập và doanh nghiệp Truyền thông và Truyền phát Xây dựng các giải pháp Âm thanh/Video được tối ưu hóa và có thể mở rộng QA / Kỹ thuật kiểm tra Dịch vụ kỹ thuật End to End Test Đám mây & DevOpsCI/CD & Tự động hóa cơ sở hạ tầng Thiết lập quy trình Phân phối liên tục cho các chu kỳ phát hành ngắn Áp dụng Kubernetes Tăng tốc việc áp dụng Kubernetes của bạn Kỹ thuật dữ liệu & MLKỹ thuật dữ liệu & Đường ống Thiết kế và triển khai các đường ống ETL thời gian thực Phát triển Chatbot Phát triển các chatbot đa kênh phức tạp trí tuệ nhân tạo & học máy AI & ML để thu thập thông tin chi tiết từ dữ liệu của bạn Chiến lược và Tư vấnchuyển đổi kỹ thuật số Giúp các doanh nghiệp nắm bắt quá trình chuyển đổi kỹ thuật số toàn diện và khai thác lợi ích của các công nghệ mới nổi Chúng tôi tự hào được vinh danh là một trong những Nơi làm việc tốt nhất Ấn Độ™ Các ngành nghề Câu chuyện thành công Về Giới thiệu về Velotio Tìm hiểu về lãnh đạo cấp cao của chúng tôi và chúng tôi là ai Văn hoá Xem cách chúng tôi làm việc và những gì chúng tôi coi trọng Chương trình tăng tốc Golang & Kubernetes Được tuyển dụng và đào tạo để trở thành kỹ sư chuyên nghiệp về đám mây CSR Hãy xem các sáng kiến của chúng tôi nhằm trao quyền cho giới trẻ đóng vai trò là tác nhân của sự thay đổi Bảo vệ IP Tìm hiểu cách chúng tôi đảm bảo an ninh hoàn toàn cho doanh nghiệp của bạn Cách chúng tôi giao hàng Biết cách làm việc với Velotio trông như thế nào nghề nghiệp Hãy tham gia cộng đồng đam mê công nghệ sôi động tại Velotio Thông cáo báo chí Hãy xem những tin tức và cập nhật mới nhất của chúng tôi Tại sao Velotio?
Tài nguyên Blog kỹ thuật Blog công nghệ được viết bởi các kỹ sư của chúng tôi Quần short công nghệ Velotio Video ngắn 10 phút về các công cụ, xu hướng và công nghệ mới nhất Rung động Velotio Cái nhìn của người trong cuộc về điều khiến chúng ta khác biệt Vélotio Elevate Hội nghị công nghệ ảo hàng năm của chúng tôi để trao đổi kiến thức và chia sẻ kiến thức chuyên môn Velotio Trong tin tức Xem những gì chúng tôi đã làm gần đây Tìm hiểu sâu về văn hóa làm việc được trao quyền và tự chủ của chúng tôi Tải xuống Sách Văn hóa của VelotioLiên hệ chúng tôi Liên hệ chúng tôi x Triển khai các tính năng không đồng bộ trong Python - Hướng dẫn từng bước Prashant KumarPhát triển toàn diện Thẻ lập trình không đồng bộ lập trình song song IO không đồng bộ đồng thời Lập trình không đồng bộ trong Python Lập trình không đồng bộ là một đặc điểm của các ngôn ngữ lập trình hiện đại cho phép một ứng dụng thực hiện các hoạt động khác nhau mà không cần đợi bất kỳ hoạt động nào trong số đó. Tính không đồng bộ là một trong những lý do lớn cho sự phổ biến của Node. js Chúng tôi đã thảo luận về các tính năng không đồng bộ của Python như một phần của bài viết trước của chúng tôi. giới thiệu về lập trình không đồng bộ trong Python. Blog này là một sự phát triển tự nhiên về cùng một chủ đề. Chúng ta sẽ thảo luận chi tiết về các tính năng không đồng bộ trong Python và xem xét một số ví dụ thực tế Hãy xem xét một ứng dụng quét web truyền thống cần mở hàng nghìn kết nối mạng. Chúng tôi có thể mở một kết nối mạng, tìm nạp kết quả và sau đó chuyển sang các kết nối tiếp theo lặp đi lặp lại. Cách tiếp cận này làm tăng độ trễ của chương trình. Nó dành nhiều thời gian để mở một kết nối và đợi người khác hoàn thành công việc của họ Mặt khác, async cung cấp cho bạn phương pháp mở hàng nghìn kết nối cùng lúc và hoán đổi giữa các kết nối khi chúng kết thúc và trả về kết quả của chúng. Về cơ bản, nó gửi yêu cầu đến một kết nối và chuyển sang kết nối tiếp theo thay vì đợi phản hồi của kết nối trước đó. Nó tiếp tục như vậy cho đến khi tất cả các kết nối đã trả về kết quả đầu ra. Nguồn. phpmind Từ biểu đồ trên, chúng ta có thể thấy rằng sử dụng lập trình đồng bộ trên bốn tác vụ mất 45 giây để hoàn thành, trong khi ở lập trình không đồng bộ, bốn tác vụ đó chỉ mất 20 giây Lập trình không đồng bộ phù hợp ở đâu trong thế giới thực?Lập trình không đồng bộ phù hợp nhất cho các tình huống phổ biến như 1. Chương trình mất quá nhiều thời gian để thực hiện 2. Lý do chậm trễ là chờ thao tác nhập hoặc xuất chứ không phải tính toán 3. Đối với các tác vụ có nhiều hoạt động đầu vào hoặc đầu ra được thực hiện cùng một lúc Và về mặt ứng dụng, đây là những trường hợp sử dụng ví dụ
Sự khác biệt giữa Song song, Đồng thời, Phân luồng và IO không đồng bộBởi vì chúng ta đã thảo luận chi tiết về sự so sánh này trong bài viết trước, nên chúng ta sẽ lướt qua khái niệm này một cách nhanh chóng vì nó sẽ giúp ích cho chúng ta với ví dụ thực hành sau này Song song liên quan đến việc thực hiện nhiều hoạt động tại một thời điểm. Đa xử lý là một ví dụ về nó. Nó rất phù hợp với các tác vụ liên quan đến CPU Đồng thời rộng hơn một chút so với Song song. Nó liên quan đến nhiều nhiệm vụ chạy theo cách chồng chéo Luồng - một luồng là một luồng thực thi riêng biệt. Một tiến trình có thể chứa nhiều luồng và mỗi luồng chạy độc lập. Đó là lý tưởng cho các nhiệm vụ ràng buộc IO Async IO là thiết kế đơn luồng, đơn xử lý sử dụng đa nhiệm hợp tác. Nói một cách đơn giản, async IO mang lại cảm giác đồng thời mặc dù sử dụng một luồng đơn trong một quy trình Các thành phần của lập trình Async IOHãy khám phá sâu các thành phần khác nhau của Async IO. Chúng tôi cũng sẽ xem xét một mã ví dụ để giúp chúng tôi hiểu việc triển khai 1. quân đoànCoroutines chủ yếu là hình thức tổng quát hóa của chương trình con. Chúng thường được sử dụng cho các tác vụ hợp tác và hoạt động giống như trình tạo Python Hàm async sử dụng từ khóa đang chờ để biểu thị một quy trình đăng ký. Khi sử dụng từ khóa chờ đợi, các coroutine sẽ giải phóng luồng điều khiển trở lại vòng lặp sự kiện Để chạy một coroutine, chúng ta cần lên lịch cho nó trên vòng lặp sự kiện. Sau khi lên lịch, các coroutine được bao bọc trong Nhiệm vụ dưới dạng đối tượng Tương lai Ví dụ Trong đoạn mã dưới đây, chúng tôi đã gọi async_func từ chức năng chính. Chúng tôi phải thêm từ khóa chờ trong khi gọi chức năng đồng bộ hóa. Như bạn có thể thấy, async_func sẽ không làm gì trừ khi việc triển khai từ khóa đang chờ đi kèm với nó MÃ SỐ. https. //ý chính. github. com/velotiotech/62621dc28aa525bc1217e233fa5a7b40. js đầu ra MÃ SỐ. https. //ý chính. github. com/velotiotech/d868f2238e0d0cfb0d3b8bb7495c647d. js 2. nhiệm vụCác tác vụ được sử dụng để lên lịch cho các coroutine đồng thời Khi gửi một quy trình đăng ký đến một vòng lặp sự kiện để xử lý, bạn có thể nhận một đối tượng Tác vụ, cung cấp một cách để kiểm soát hành vi của quy trình đăng ký từ bên ngoài vòng lặp sự kiện Ví dụ Trong đoạn mã bên dưới, chúng tôi đang tạo một tác vụ bằng cách sử dụng create_task (một chức năng sẵn có của thư viện asyncio) và sau đó chúng tôi sẽ chạy nó MÃ SỐ. https. //ý chính. github. com/velotiotech/2883ae8fc08b4a16ad4b2b991b92642f. js đầu ra MÃ SỐ. https. //ý chính. github. com/velotiotech/16e4aafcc5957b6813ae02611fd52807. js 3 vòng lặp sự kiệnCơ chế này chạy các coroutine cho đến khi chúng hoàn thành. Bạn có thể tưởng tượng nó giống như vòng lặp while(True) giám sát coroutine, nhận phản hồi về những gì không hoạt động và tìm kiếm những thứ có thể được thực thi trong thời gian chờ đợi Nó có thể đánh thức một coroutine nhàn rỗi khi bất cứ thứ gì mà coroutine đó đang chờ trở nên khả dụng Mỗi lần chỉ có thể chạy một vòng lặp sự kiện trong Python Ví dụ Trong đoạn mã bên dưới, chúng tôi đang tạo ba tác vụ, sau đó nối chúng vào danh sách và thực thi tất cả các tác vụ một cách không đồng bộ bằng cách sử dụng get_event_loop, create_task và chức năng chờ đợi của thư viện asyncio MÃ SỐ. https. //ý chính. github. com/velotiotech/cfa3219da51ef24218c33706971516de. js đầu ra MÃ SỐ. https. //ý chính. github. com/velotiotech/ee345dfd8293b70c56dbdc98fedd90f0. js Tương laiTương lai là một đối tượng đặc biệt, có sẵn ở mức độ thấp, đại diện cho kết quả cuối cùng của hoạt động không đồng bộ Khi một đối tượng Tương lai được chờ đợi, đồng quy trình sẽ đợi cho đến khi Tương lai được giải quyết ở một nơi khác Chúng ta sẽ xem xét mã mẫu cho các đối tượng Tương lai trong phần tiếp theo So sánh giữa Đa luồng và IO không đồng bộTrước khi chúng tôi chuyển sang Async IO, hãy sử dụng đa luồng làm điểm chuẩn và sau đó so sánh chúng để xem cái nào hiệu quả hơn Đối với điểm chuẩn này, chúng tôi sẽ tìm nạp dữ liệu từ một URL mẫu (trang web Velotio Career) với các tần suất khác nhau, chẳng hạn như một lần, mười lần, 50 lần, 100 lần, 500 lần, tương ứng Sau đó, chúng tôi sẽ so sánh thời gian thực hiện của cả hai phương pháp này để tìm nạp dữ liệu cần thiết Thực hiệnMã đa luồng MÃ SỐ. https. //ý chính. github. com/velotiotech/d33aad834064c12a1a28af5d8d3a2c18. js đầu ra MÃ SỐ. https. //ý chính. github. com/velotiotech/c087f7a863602bf122097f56e209cf28. js ProcessPoolExecutor là gói Python triển khai giao diện Executor. Fetch_url_data là một hàm để tìm nạp dữ liệu từ URL đã cho bằng cách sử dụng gói yêu cầu python và hàm get_all_url_data được sử dụng để ánh xạ hàm fetch_url_data vào danh sách các URL Ví dụ lập trình IO không đồng bộ MÃ SỐ. https. //ý chính. github. com/velotiotech/3bd9314613b1079d1dd2a69048676457. js đầu ra MÃ SỐ. https. //ý chính. github. com/velotiotech/7480b34b26525e2d3bba07dc61665397. js Chúng ta cần sử dụng hàm get_event_loop để tạo và thêm các tác vụ. Để chạy nhiều hơn một URL, chúng tôi phải sử dụng ensure_future và chức năng thu thập Hàm fetch_async được sử dụng để thêm tác vụ vào đối tượng event_loop và hàm fetch_url_data được sử dụng để đọc dữ liệu từ URL bằng gói phiên. Phương thức future_result trả về phản hồi của tất cả các tác vụ Kết quả Như bạn có thể thấy từ cốt truyện, lập trình không đồng bộ hiệu quả hơn nhiều so với đa luồng cho chương trình trên. Biểu đồ của chương trình đa luồng trông tuyến tính, trong khi biểu đồ chương trình asyncio tương tự như logarit Phần kết luậnNhư chúng ta đã thấy trong thử nghiệm ở trên, Async IO cho thấy hiệu suất tốt hơn với việc sử dụng đồng thời hiệu quả hơn so với đa luồng Async IO có thể có lợi trong các ứng dụng có thể khai thác đồng thời. Mặc dù, dựa trên loại ứng dụng mà chúng tôi đang xử lý, việc chọn Async IO thay vì các triển khai khác là rất thực tế Chúng tôi hy vọng bài viết này đã giúp bạn hiểu thêm về tính năng không đồng bộ trong Python và cung cấp cho bạn một số kinh nghiệm thực hành nhanh bằng cách sử dụng các ví dụ mã được chia sẻ ở trên Nhận các blog kỹ thuật mới nhất được gửi thẳng đến hộp thư đến của bạn không có thư rác. Chỉ những hiểu biết của chuyên gia Tôi đồng ý với Chính sách quyền riêng tư của VelotioCảm ơn. Nội dung gửi của bạn đã được nhận Ối. Đã xảy ra lỗi khi gửi biểu mẫu BÀI VIẾT THÊM CỦA TÁC GIẢ NÀYPrashant KumarPhát triển toàn diện Prashant là kỹ sư phần mềm tại Velotio. Anh ấy có kinh nghiệm về Python, Django và JavaScript. Anh ấy đã giúp khách hàng tạo các đường dẫn ETL và viết các tập lệnh Python. Anh ấy rất quan tâm đến lập trình cạnh tranh. Trong thời gian rảnh rỗi, anh ấy thích giải câu đố và chơi cricket |