thắc mắc Tất tần tật về Python

Các bác cho em hỏi về cái async/await trong python với
Python:
>>> import asyncio

>>> async def main():
...     print('hello')
...     await asyncio.sleep(1)
...     print('world')

>>> asyncio.run(main())
hello
world

Trong đoạn code này thì await tức là skip qua đoạn sleep

Còn trong đoạn này:
1657797199940.png


Sao await nó không skip để ra 2 cái output là :started at 17:13:52 và finished at 17:13:52 nhỉ?

Em thấy khó hiểu quá, bác nào giải thích cho em với

nguồn https://docs.python.org/3/library/asyncio-task.html
 
Các bác cho em hỏi về cái async/await trong python với
Python:
>>> import asyncio

>>> async def main():
...     print('hello')
...     await asyncio.sleep(1)
...     print('world')

>>> asyncio.run(main())
hello
world

Trong đoạn code này thì await tức là skip qua đoạn sleep

Còn trong đoạn này:
Xem tệp đính kèm 1264734

Sao await nó không skip để ra 2 cái output là :started at 17:13:52 và finished at 17:13:52 nhỉ?

Em thấy khó hiểu quá, bác nào giải thích cho em với

nguồn https://docs.python.org/3/library/asyncio-task.html
đúng là nick 3 người dùng :misdoubt::misdoubt::misdoubt:
 
cái này gg ra 1 đống mà, bắt đầu từ callback , sau đến promise, và cuối cùng là async/ await , bọn này phải xem bên js mới thấy lý do vì sao đẻ ra nó, mà anh này làm gì rồi, sao hỏi mấy cái basic này thế, đợt trước bên thuật toán chém gió kinh lắm mà:D ...

anh đặt vào ngữ cảnh thế này cho dễ hình dung, anh viết viết front, gọi về back bằng api, và sẽ có trường hợp anh bắt buộc phải đợi lấy đc dữ liệu trả về mới làm tiếp các hành động bên dưới, và có trường hợp ảnh chả qua tâm cứ cho nó 1 callback khi nào gọi xong nó gọi callback ra thực thi, python thì tôi ko biết nhưng bên js chỉ có 1 số hàm nó ko bị block thì mới cho skip đc, còn đâu thì vẫn bị block đợi tính toán xong mới chạy tiếp thằng bên dưới, vì thằng js thiết kế đơn luồng nên phải dùng bất đồng bộ để tăng hiệu suất, thay vì ngồi đợi response từ server tôi đi làm việc khác, khi nào xong thì móc thằng callback truyền vào ra mà chạy
 
Sửa lần cuối:
cái này gg ra 1 đống mà, bắt đầu từ callback , sau đến promise, và cuối cùng là async/ await , bọn này phải xem bên js mới thấy lý do vì sao đẻ ra nó, mà anh này làm gì rồi, sao hỏi mấy cái basic này thế, đợt trước bên thuật toán chém gió kinh lắm mà:D
python khác javascript chứ fen, làm gì có callback promise nào
 
Các bác cho em hỏi về cái async/await trong python với
Python:
>>> import asyncio

>>> async def main():
...     print('hello')
...     await asyncio.sleep(1)
...     print('world')

>>> asyncio.run(main())
hello
world

Trong đoạn code này thì await tức là skip qua đoạn sleep

Còn trong đoạn này:
Xem tệp đính kèm 1264734

Sao await nó không skip để ra 2 cái output là :started at 17:13:52 và finished at 17:13:52 nhỉ?

Em thấy khó hiểu quá, bác nào giải thích cho em với

nguồn https://docs.python.org/3/library/asyncio-task.html
cop code về chạy thử chưa anh già mà kêu cái trên nó skip cái sleep ?:sexy_girl:
 
Python:
import asyncio
import time

async def main():
    print(f"{time.strftime('%X')}")
    print('hello')
    await asyncio.sleep(1)
    print(f"{time.strftime('%X')}")
    print('world')

asyncio.run(main())


async def say_after(delay, what):
    await asyncio.sleep(delay)
    print(what)

async def main2():
    print(f"started at {time.strftime('%X')}")

    await say_after(1, 'hello')
    await say_after(2, 'world')

    print(f"finished at {time.strftime('%X')}")

asyncio.run(main2())

19:45:33
hello
19:45:34
world
started at 19:45:34
hello
world
finished at 19:45:37

Bình thường mà:shame:
 
Python:
import asyncio
import time

async def main():
    print(f"{time.strftime('%X')}")
    print('hello')
    await asyncio.sleep(1)
    print(f"{time.strftime('%X')}")
    print('world')

asyncio.run(main())


async def say_after(delay, what):
    await asyncio.sleep(delay)
    print(what)

async def main2():
    print(f"started at {time.strftime('%X')}")

    await say_after(1, 'hello')
    await say_after(2, 'world')

    print(f"finished at {time.strftime('%X')}")

asyncio.run(main2())

19:45:33
hello
19:45:34
world
started at 19:45:34
hello
world
finished at 19:45:37

Bình thường mà:shame:
ừ nó chờ thật, thế làm sao để nó k chờ mà hello xong world xong mới chờ 1s gì,

vì python là chạy tuần tự rồi, cần gì phải await cho mất công, nó vẫn chờ 1s rồi chạy các câu lệnh tuần tự mà
 
ừ nó chờ thật, thế làm sao để nó k chờ mà hello xong world xong mới chờ 1s gì,

vì python là chạy tuần tự rồi, cần gì phải await cho mất công, nó vẫn chờ 1s rồi chạy các câu lệnh tuần tự mà
thôi xong anh già ko chạy thử code rồi. Anh đang nói đoạn này đúng ko.
started at 19:45:34
hello
world
finished at 19:45:37
Nó chờ 2 giây xong mới in ra word rồi in ra finished at đấy. Làm j có chuyện in xong world mới chờ.
 
thôi xong anh già ko chạy thử code rồi. Anh đang nói đoạn này đúng ko.
started at 19:45:34
hello
world
finished at 19:45:37
Nó chờ 2 giây xong mới in ra word rồi in ra finished at đấy. Làm j có chuyện in xong world mới chờ.
Python:
>>> import asyncio

>>> async def main():
...     print('hello')
...     await asyncio.sleep(1)
...     print('world')

>>> asyncio.run(main())
hello
world
đoạn này cơ:
nếu tăng hiệu suất thì ko nên chờ 1s mà làm tiếp việc sau rồi quay lại lấy kết quả của việc 1s đúng ko. Thì đáng ra ứng dụng bất động bộ nó phải như thế mới chuẩn, chứ tuần tự như này thì python ko thêm code tý nào chạy 1 mạch dòng 1-> dòng 2-> dòng 3 là đc
 
ừ nó chờ thật, thế làm sao để nó k chờ mà hello xong world xong mới chờ 1s gì,

vì python là chạy tuần tự rồi, cần gì phải await cho mất công, nó vẫn chờ 1s rồi chạy các câu lệnh tuần tự mà
Tạo 2 task async chạy đồng thời thử sẽ thấy vi diệu.
Bản chất đâu phải dùng để chạy 1 task 🥲
 
các bác cho em hỏi python học thì có đi làm mì ăn liền được không nhỉ, tại định hướng của em mai mốt sẽ là AI/ML nhưng cũng cần kiếm kế sinh nhai thời đại học nữa:adore:
 

Thống kê chủ đề

Ngày tạo
Lập Trình Viên Số Khổ,
Người trả lời cuối
trường chinh,
Trả lời
26
Lượt xem
5.884
Quay lại
Lên đầu trang