Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk menggunakan terbitan tak segerak Python
Apabila kita memikirkan "pythonic", pemahaman seperti pemahaman senarai dan kamus adalah ciri Python.
Ini adalah salah satu cara kami melakukan gelung, tidak seperti kebanyakan bahasa lain.
Asyncio membenarkan kami menggunakan pemahaman tak segerak.
Kami boleh menggunakan pemahaman tak segerak untuk mengulangi penjana tak segerak dan iterator tak segerak melalui ungkapan "async for".
Terbitan tak segerak ialah versi tak segerak bagi terbitan klasik. Asyncio menyokong dua jenis pemahaman tak segerak, iaitu pemahaman "tak segerak untuk" dan pemahaman "menunggu".
Sebelum kita melihat setiap satu, mari kita semak semula terbitan klasik.
Pemahaman membolehkan anda membuat koleksi data seperti senarai, kamus dan set dengan cara yang ringkas. Pemahaman senarai membenarkan mencipta senarai daripada ungkapan untuk dalam ungkapan senarai baharu.
... # create a list using a list comprehension result = [a*2 for a in range(100)]
juga menyokong pemahaman untuk mencipta kamus dan set.
... # create a dict using a comprehension result = {a:i for a,i in zip(['a','b','c'],range(3))} # create a set using a comprehension result = {a for a in [1, 2, 3, 2, 3, 1, 5, 4]}
Pemahaman tak segerak membenarkan penciptaan senarai, set atau kamus menggunakan ungkapan "async for" dengan objek boleh lelar tak segerak.
... # async list comprehension with an async iterator result = [a async for a in aiterable]
Ini akan membuat dan menjadualkan coroutine atau tugasan seperti yang diperlukan dan meletakkan keputusan mereka ke dalam senarai.
Ingat bahawa ungkapan "async for" hanya boleh digunakan dalam coroutine dan tugasan.
Selain itu, ingat bahawa lelaran tak segerak ialah lelaran yang menghasilkan objek yang boleh ditunggu.
Ungkapan "async for" membenarkan pemanggil untuk mengulangi lelaran tak segerak bagi objek yang ditunggu dan mendapatkan semula hasil daripada setiap objek.
Secara dalaman, gelung async for akan menghuraikan atau menunggu setiap coroutine penghantaran yang menunggu mengikut keperluan.
Penjana tak segerak secara automatik melaksanakan kaedah lelaran tak segerak dan juga boleh digunakan untuk terbitan tak segerak.
... # async list comprehension with an async generator result = [a async for a in agenerator]
Ungkapan "Tunggu" juga boleh digunakan dalam senarai, set atau pemahaman kamus, yang dipanggil menunggu terbitan.
Seperti pemahaman tak segerak, ia hanya boleh digunakan dalam coroutine atau tugasan tak segerak.
Ini membolehkan penciptaan struktur data seperti senarai dengan menggantung dan menunggu pada urutan objek yang boleh ditunggu.
... # await list compression with a collection of awaitables results = [await a for a in awaitables]
Ini akan membuat senarai keputusan dengan menunggu pada setiap objek yang boleh ditunggu secara bergilir-gilir.
Coroutine semasa akan digantung untuk melaksanakan objek yang boleh ditunggu secara berurutan, yang berbeza daripada melaksanakannya secara serentak menggunakan asyncio.gather(), dan mungkin lebih perlahan.
Atas ialah kandungan terperinci Bagaimana untuk menggunakan terbitan tak segerak Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!