Rumah >pembangunan bahagian belakang >Tutorial Python >Pengaturcaraan Pelayan Python: Memahami Perpustakaan Gevent Coroutine
Gevent ialah rangka kerja pengaturcaraan serentak berdasarkan bahasa Python Ia menyediakan satu siri perpustakaan coroutine yang membolehkan pengaturcara menulis program pelayan yang cekap dan berskala. Dalam Gevent, setiap coroutine boleh dianggap sebagai benang ringan, dan coroutine ini boleh berjalan dalam benang yang sama untuk mencapai pemprosesan serentak yang cekap.
Kelebihan utama perpustakaan coroutine Gevent ialah ia boleh mengendalikan beribu-ribu sambungan TCP secara serentak. Pengaturcaraan rangkaian Python biasa adalah berdasarkan menyekat I/O, yang bermaksud bahawa apabila sambungan disekat, keseluruhan utas akan disekat, menyebabkan pelayan bertindak balas dengan perlahan. Menggunakan perpustakaan coroutine Gevent, kita boleh meletakkan setiap sambungan TCP dalam coroutine yang berasingan Apabila salah satu sambungan disekat, Gevent akan bertukar secara automatik ke coroutine lain dan mengendalikan sambungan lain.
Selain itu, perpustakaan coroutine Gevent juga menyediakan beberapa ciri mudah yang lain, seperti sokongan untuk kelewatan dan tidur, dan penukaran automatik bagi benang hijau.
Penggunaan perpustakaan coroutine Gevent adalah sangat mudah. Mula-mula, anda perlu memasang pustaka Gevent:
pip install gevent
Kemudian, anda boleh mula menulis kod. Berikut ialah pelayan TCP mudah sebagai contoh:
import gevent from gevent import socket, monkey monkey.patch_all() def handler(client_sock, client_addr): print("New client from %s:%d" % client_addr) while True: data = client_sock.recv(1024) if not data: break print(data) client_sock.sendall(data.upper()) client_sock.close() print("Client %s:%d disconnected." % client_addr) def server(host,port): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.bind((host,port)) sock.listen(5) while True: client_sock, client_addr = sock.accept() gevent.spawn(handler, client_sock, client_addr) if __name__ == '__main__': server('0.0.0.0', 8000)
Dalam contoh ini, kami mentakrifkan fungsi pengendali yang akan menerima permintaan pelanggan dan memprosesnya. Dalam fungsi utama, kami menggunakan fungsi spawn Gevent untuk mencipta coroutine dan lulus dalam fungsi pengendali sebagai parameter. Coroutine ini akan dipanggil apabila pelanggan baharu menyambung, sekali gus mencapai pemprosesan serentak yang cekap.
Selain itu, perhatikan bahawa kami menggunakan fungsi monkey.patch_all() pada permulaan kod. Fungsi ini secara automatik boleh menukar semua operasi I/O menyekat kepada operasi tidak menyekat untuk mengelakkan sekatan benang. Fungsi ini secara amnya perlu dipanggil pada permulaan kod.
Dengan menggunakan perpustakaan coroutine Gevent, kami boleh mencipta program pelayan yang cekap dan berskala dengan mudah. Coroutine Gevent adalah ringan seperti benang, boleh mengendalikan beribu-ribu sambungan TCP, menyokong penukaran automatik benang hijau, dan juga mempunyai sokongan untuk kelewatan dan tidur. Menggunakan perpustakaan coroutine Gevent boleh mencapai pemprosesan serentak yang cekap dan menyediakan pelbagai alatan dan kemudahan untuk menulis program pelayan berprestasi tinggi.
Atas ialah kandungan terperinci Pengaturcaraan Pelayan Python: Memahami Perpustakaan Gevent Coroutine. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!