日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

socket发送请求,协程

發(fā)布時(shí)間:2024/8/26 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 socket发送请求,协程 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.socket發(fā)送請(qǐng)求

1 #發(fā)送請(qǐng)求的方式 2 3 #方式一 4 import requests 5 6 ret = requests.get("https://www.baidu.com/s?wd=abc") 7 8 print(ret.text) 9 10 11 #方式二 12 13 import socket 14 15 client = socket.socket() 16 client.connect(("www.baidu.com",80)) 17 client.sendall(b"GET /s?wd=alex HTTP/1.0\r\nhost:www.baidu.com\r\n\r\n") 18 chunk_list = [] 19 while True: 20 chunk = client.recv(8096) 21 if not chunk: 22 break 23 chunk_list.append(chunk) 24 25 body = b"".join(chunk_list) 26 print(body.decode("utf-8"))

  單線程的并發(fā)

1 import socket 2 import select 3 4 client1 = socket.socket() 5 client1.setblocking(False)#百度創(chuàng)建鏈接:非阻塞 6 7 try: 8 client1.connect(("www.baidu.com",80)) 9 except BlockingIOError as e: 10 pass 11 12 client2 = socket.socket() 13 client2.setblocking(False) 14 15 try: 16 client2.connect(("www.baidu.com",80)) 17 except BlockingIOError as e: 18 pass 19 20 client3 = socket.socket() 21 client3.setblocking(False) 22 23 try: 24 client3.connect(("www.baidu.com",80)) 25 except BlockingIOError as e: 26 pass 27 28 socket_list = [client1,client2,client3] 29 conn_list = [client1,client2,client3] 30 31 while True: 32 rlist,wlist,elist = select.select(socket_list,conn_list,[],0.005) 33 for sk in wlist: 34 if sk == client1: 35 sk.sendall(b'GET /s?wd=alex HTTP/1.0\r\nhost:www.baidu.com\r\n\r\n') 36 elif sk == client2: 37 sk.sendall(b'GET /web?query=fdf HTTP/1.0\r\nhost:www.sogou.com\r\n\r\n') 38 else: 39 sk.sendall(b'GET /s?wd=alex HTTP/1.0\r\nhost:www.oldboyedu.com\r\n\r\n') 40 conn_list.remove(sk) 41 for sk in rlist: 42 chunk_list = [] 43 while True: 44 try: 45 chunk = sk.recv(8096) 46 if not chunk: 47 break 48 chunk_list.append(chunk) 49 except BlockingIOError as e: 50 break 51 body = b"".join(chunk_list) 52 53 sk.close() 54 socket_list.remove(sk) 55 if not socket_list: 56 break

?

2.協(xié)程

1 import greenlet 2 3 def f1(): 4 print(111) 5 g2.switch() 6 print(222) 7 g2.switch() 8 9 def f2(): 10 print(333) 11 g1.switch() 12 print(444) 13 14 g1 = greenlet.greenlet(f1) 15 g2 = greenlet.greenlet(f2) 16 g1.switch()

協(xié)程的IO切換

1 from gevent import monkey 2 monkey.patch_all() 3 import requests 4 import gevent 5 6 def get_page1(url): 7 ret = requests.get(url) 8 print(url,ret.content) 9 10 def get_page2(url): 11 ret = requests.get(url) 12 print(url,ret.content) 13 14 def get_page3(url): 15 ret = requests.get(url) 16 print(url,ret.content) 17 18 gevent.joinall( 19 gevent.spawn(get_page1,'https://www.python.org/'), 20 gevent.spawn(get_page2, 'https://www.yahoo.com/'), 21 gevent.spawn(get_page3, 'https://github.com/') 22 23 )

?

轉(zhuǎn)載于:https://www.cnblogs.com/s593941/p/9643246.html

總結(jié)

以上是生活随笔為你收集整理的socket发送请求,协程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。