Coroutine, juga dikenali sebagai benang mikro, ialah teknologi untuk penukaran konteks dalam mod pengguna. Ringkasnya, ia sebenarnya adalah urutan untuk melaksanakan blok kod untuk bertukar antara pelaksanaan
Sokongan Python untuk coroutine dilaksanakan melalui penjana.
Dalam penjana, kita bukan sahaja boleh melelaran melalui gelung for, tetapi juga terus memanggil fungsi next() untuk mendapatkan nilai seterusnya yang dikembalikan oleh pernyataan hasil. Hasil Python bukan sahaja boleh digunakan untuk mengembalikan nilai, tetapi juga boleh menerima parameter yang diluluskan oleh pemanggil.
1. Apakah itu penjana
Mekanisme yang dipanggil penjana dalam Python dikira semasa menggelung. Dengan memberikan algoritma dan kemudian mengira nilai sebenar semasa panggilan.
Apabila anda perlu mendapatkan nilai daripada penjana, anda boleh menggunakan next(), tetapi secara amnya gunakan gelung for untuk mendapatkannya.
penjana kaedah pelaksanaan penjana, gunakan () untuk mewakili
seperti: [1, 2, 3, 4, 5], kaedah penjana:
data = [1, 2, 3, 4, 5] (x * x for x in len(data))
definisi fungsi Dalam sesetengah senario dengan logik yang kompleks, ia tidak sesuai untuk menggunakan kaedah pertama, jadi terdapat cara untuk menentukan fungsi jenis, seperti:
def num(x): while (x < 10): print(x * x) x += 1 g = num(1) for item in g: print(item)
Apabila hasil muncul dalam fungsi, ia menjadi penjana
def num(x): while (x < 10): yield x * x # 返回结果,下次从这个地方继续? x += 1 g = num(1) # 返回的是generator对象 for item in g: print(item)
menjadi fungsi penjana, yang dilaksanakan setiap kali next() dipanggil. Ia kembali apabila menemui pernyataan hasil Apabila dilaksanakan semula, pelaksanaan diteruskan daripada pernyataan hasil yang dikembalikan pada kali terakhir.
2. Gunakan asyncio untuk melaksanakan io asynchronous
io asynchronous dilaksanakan melalui fungsi gelung acara dan coroutine
Gelung acara sentiasa memantau tugasan dalaman dan melaksanakannya jika wujud; tugas Dibahagikan kepada boleh laku dan laksanakan gelung acara menentukan tugasan pemprosesan Jika senarai tugasan kosong, acara ditamatkan.
import asyncio # 生成或获取事件循环对象loop;类比Java的Netty,我理解为开启一个selector loop = asyncio.get_event_loop() # 将协程函数(任务)提交到事件循环的任务列表中,协程函数执行完成之后终止。 # run_until_complete 会检查协程函数的运行状态,并执行协程函数 loop.run_until_complete( func() )
demo ujian
import asyncio import time async def test(): print("io等待") await asyncio.sleep(1) return 'hello' async def hello(): print("Hello world") r = await test() print("hello again") loop = asyncio.get_event_loop() tasks = [hello(), hello()] loop.run_until_complete(asyncio.wait(tasks)) loop.close()
Fungsi Coroutine: fungsi yang diubah suai oleh async def; berbanding dengan def biasa, seperti def func(), anda boleh The nilai yang dikembalikan oleh fungsi diterima secara langsung tetapi untuk fungsi coroutine, objek coroutine dikembalikan.
Untuk menjalankan fungsi coroutine, anda perlu menyerahkan objek ini ke gelung acara untuk diproses.
# 测试协程 import asyncio import time, datetime # 异步函数不同于普通函数,调用普通函数会得到返回值 # 而调用异步函数会得到一个协程对象。我们需要将协程对象放到一个事件循环中才能达到与其他协程对象协作的效果 # 因为事件循环会负责处理子程 序切换的操作。 async def Print(): return "hello" loop = asyncio.get_event_loop() loop.run_until_complete(Print)
menunggu:
Penggunaan: respons = menunggu + objek yang boleh ditunggu
Objek yang boleh ditunggu: objek coroutine, Masa Depan, Objek tugas boleh difahami Menunggu IO
tindak balas: Keputusan menunggu akan menggantung coroutine semasa (tugas) apabila menghadapi operasi IO Apabila coroutine semasa digantung, gelung acara boleh melaksanakan coroutine lain (tugasan). objek ialah objek coroutine, ia menjadi bersiri Jika ia adalah objek Tugas, objek Tugasan berjalan serentak boleh ditambah ke senarai gelung acara. Anda boleh menggunakan `asyncio.create_task()` untuk mencipta objek `Task` dan parameter yang diluluskan ialah objek coroutine
import asyncio import time, datetime async def display(num): pass tasks = [] for num in range(10): tasks.append(display(num)) # 生成任务列表 loop = asyncio.get_event_loop() loop.run_until_complete(asyncio.wait(tasks))
asnyc dan tunggu ialah sintaks baharu, versi lama ialah: @asyncio.coroutine dan hasil daripada
3. aiohttp
asyncio boleh melaksanakan operasi IO serentak berbenang tunggal. Jika ia hanya digunakan pada sisi pelanggan, ia tidak akan menjadi sangat berkuasa. Jika asyncio digunakan pada bahagian pelayan, seperti pelayan web, memandangkan sambungan HTTP adalah operasi IO, benang tunggal + coroutine boleh digunakan untuk mencapai sokongan serentak tinggi untuk berbilang pengguna.
aiohttp ialah rangka kerja HTTP berdasarkan asyncio.
Anda boleh menghantar mendapatkan permintaan seperti permintaan
Anda boleh menentukan parameter yang akan dihantar melalui parameter params
async def fetch(session): async with session.get("http://localhost:10056/test/") as response: data = json.loads(await response.text()) print(data["data"])
Permintaan pos
Laksanakan dua tugas secara tak segerak
Dalam permintaan rangkaian, permintaan ialah sesi dan aiohttp menggunakan ClientSession untuk mengurus sesi
Gunakan session.method untuk menghantar permintaan
Untuk respons maklumat respons, gunakan status untuk mendapatkan kod status respons, dan teks() untuk mendapatkan kandungan respons anda boleh menentukan format pengekodan dalam teks(). Sebelum menunggu keputusan respons, anda perlu menambah kata kunci await
Atas ialah kandungan terperinci Bagaimana untuk menggunakan modul async Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Fleksibiliti Python dicerminkan dalam sokongan multi-paradigma dan sistem jenis dinamik, sementara kemudahan penggunaan berasal dari sintaks mudah dan perpustakaan standard yang kaya. 1. Fleksibiliti: Menyokong pengaturcaraan berorientasikan objek, fungsional dan prosedur, dan sistem jenis dinamik meningkatkan kecekapan pembangunan. 2. Kemudahan Penggunaan: Tatabahasa adalah dekat dengan bahasa semulajadi, perpustakaan standard merangkumi pelbagai fungsi, dan memudahkan proses pembangunan.

Python sangat disukai kerana kesederhanaan dan kuasa, sesuai untuk semua keperluan dari pemula hingga pemaju canggih. Kepelbagaiannya dicerminkan dalam: 1) mudah dipelajari dan digunakan, sintaks mudah; 2) perpustakaan dan kerangka yang kaya, seperti numpy, panda, dan sebagainya; 3) sokongan silang platform, yang boleh dijalankan pada pelbagai sistem operasi; 4) Sesuai untuk tugas skrip dan automasi untuk meningkatkan kecekapan kerja.

Ya, pelajari Python dalam masa dua jam sehari. 1. Membangunkan pelan kajian yang munasabah, 2. Pilih sumber pembelajaran yang betul, 3 menyatukan pengetahuan yang dipelajari melalui amalan. Langkah -langkah ini dapat membantu anda menguasai Python dalam masa yang singkat.

Python sesuai untuk pembangunan pesat dan pemprosesan data, manakala C sesuai untuk prestasi tinggi dan kawalan asas. 1) Python mudah digunakan, dengan sintaks ringkas, dan sesuai untuk sains data dan pembangunan web. 2) C mempunyai prestasi tinggi dan kawalan yang tepat, dan sering digunakan dalam pengaturcaraan permainan dan sistem.

Masa yang diperlukan untuk belajar python berbeza dari orang ke orang, terutamanya dipengaruhi oleh pengalaman pengaturcaraan sebelumnya, motivasi pembelajaran, sumber pembelajaran dan kaedah, dan irama pembelajaran. Tetapkan matlamat pembelajaran yang realistik dan pelajari terbaik melalui projek praktikal.

Python cemerlang dalam automasi, skrip, dan pengurusan tugas. 1) Automasi: Sandaran fail direalisasikan melalui perpustakaan standard seperti OS dan Shutil. 2) Penulisan Skrip: Gunakan Perpustakaan Psutil untuk memantau sumber sistem. 3) Pengurusan Tugas: Gunakan perpustakaan jadual untuk menjadualkan tugas. Kemudahan penggunaan Python dan sokongan perpustakaan yang kaya menjadikannya alat pilihan di kawasan ini.

Untuk memaksimumkan kecekapan pembelajaran Python dalam masa yang terhad, anda boleh menggunakan modul, masa, dan modul Python. 1. Modul DateTime digunakan untuk merakam dan merancang masa pembelajaran. 2. Modul Masa membantu menetapkan kajian dan masa rehat. 3. Modul Jadual secara automatik mengatur tugas pembelajaran mingguan.

Python cemerlang dalam permainan dan pembangunan GUI. 1) Pembangunan permainan menggunakan pygame, menyediakan lukisan, audio dan fungsi lain, yang sesuai untuk membuat permainan 2D. 2) Pembangunan GUI boleh memilih tkinter atau pyqt. TKInter adalah mudah dan mudah digunakan, PYQT mempunyai fungsi yang kaya dan sesuai untuk pembangunan profesional.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Pelayar Peperiksaan Selamat
Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

MantisBT
Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

VSCode Windows 64-bit Muat Turun
Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

Versi Mac WebStorm
Alat pembangunan JavaScript yang berguna