sách gpt4 ai đã đi

Sự khác biệt giữa decorator @types.coroutine và @asyncio.coroutine là gì?

In lại Tác giả: IT Lao Gao Thời gian cập nhật: 2023-10-28 21:05:06 26 4
mua khóa gpt4 Nike

Tài liệu nêu rõ:

@asyncio.coroutine

Decorator để đánh dấu các coroutine dựa trên generator. Điều này cho phép generator sử dụng yield from để gọi các coroutine def async và cũng cho phép generator được gọi bởi các coroutine def async, ví dụ như sử dụng biểu thức await.

_

@types.coroutine(gen_func)

Hàm này chuyển đổi một hàm generator thành một hàm coroutine trả về một coroutine dựa trên generator. Coroutine dựa trên generator vẫn là một trình lặp generator, nhưng cũng được coi là một đối tượng coroutine và có thể chờ đợi. Tuy nhiên, nó không nhất thiết phải triển khai __chờ đợi__() phương pháp.

Vì vậy, có vẻ như mục đích là giống nhau - đánh dấu một trình tạo là một trình tự con ( định nghĩa không đồng bộ những gì đã được thực hiện với một số tính năng).

Khi nào sử dụngasyncio.coroutine Khi nào sử dụngcác loại.coroutine, sự khác biệt là gì?

1 Câu trả lời

Sự khác biệt nằm ở chỗ bạn có báo cáo lợi nhuận hay không. Mã như sau:

từ các loại nhập coroutine như t_coroutine
từ asyncio nhập coroutine như a_coroutine, sure_future, sleep, get_event_loop


@a_coroutine
định nghĩa a_sleep():
print("làm gì đó bất đồng bộ")
năng suất 1


@t_coroutine
định nghĩa t_sleep():
print("làm gì đó trong các loại")
năng suất 1


async def start():
ngủ_a = ngủ_a()
ngủ_t = t_ngủ()
print("Đang đi xuống!")


vòng lặp = get_event_loop()
loop.run_until_complete(bắt đầu())

Trong ví dụ này, mọi thứ đều giống nhau - đây là thông tin gỡ lỗi từ PyCharm (chúng ta đang ở dòng "Sắp ngừng hoạt động!"). Chưa có thông tin nào được in ra trong bảng điều khiển nên chức năng chưa bắt đầu.

Gỡ lỗi PyCharm

NhưngNếu chúng ta loại bỏnăng suất,các loại Phiên bản sẽ bắt đầu ngay lập tức!

từ các loại nhập coroutine như t_coroutine
từ asyncio nhập coroutine như a_coroutine, sure_future, sleep, get_event_loop


@a_coroutine
định nghĩa a_sleep():
print("làm gì đó bất đồng bộ")


@t_coroutine
định nghĩa t_sleep():
print("làm gì đó trong các loại")


async def start():
ngủ_a = ngủ_a()
ngủ_t = t_ngủ()
print("Đang đi xuống!")


vòng lặp = get_event_loop()
loop.run_until_complete(bắt đầu())

Bây giờ chúng ta in ra bảng điều khiển làm mọi thứ theo từng loại. Đây là thông tin gỡ lỗi:

thông tin gỡ lỗi mới

Như bạn có thể thấyBắt đầu ngay sau khi gọi, nếu không có kết quả thì trả về None.


Về cách sử dụng, bạn nên luôn luôn sử dụng không đồng bộ Phiên bản. Nếu bạn cần thứ gì đó như bắn và quên Chạy nó giống như (chạy ngay lập tức và nhận kết quả sau) - sử dụng đảm bảo tương lai chức năng.

Sự khác biệt giữa decorator @types.coroutine và @asyncio.coroutine là gì? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/39637675/

26 4 0
CNTT Lao Gao
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com