2019-11-15 Python

一杨耙、42_(1)greenlet

"""可以用greenlet替換(代)yield"""

from greenletimport greenlet

import time

"""

協(xié)程其實(shí)是一個(gè)假的多任務(wù),真的多任務(wù)叫并行,

假的多任務(wù)叫并發(fā)。

導(dǎo)入的greenlet其實(shí)是一個(gè)類,可以實(shí)例化并調(diào)用飘痛。

實(shí)際開發(fā)中不使用; 用gevent

"""

def test1():

while True:

print ("---A--")

"""執(zhí)行text2()函數(shù)"""

? ? ? ? gr2.switch()

time.sleep(0.5)

def test2():

while True:

print ("---B--")

gr1.switch()

time.sleep(0.5)

gr1 = greenlet(test1)

gr2 = greenlet(test2)

"""執(zhí)行函數(shù)text1()"""

gr1.switch()

二珊膜、42_使用gevent實(shí)現(xiàn)多任務(wù)

import gevent

"""推薦使用gevent實(shí)現(xiàn)多任務(wù)"""

import time

"""

gevent遇到【sleep:暫停(延時(shí))】就切換到下一個(gè)命令執(zhí)行

;沒有就不切換

"""

from geventimport monkey

"""給程序打補(bǔ)丁"""

# 有耗時(shí)操作時(shí)需要

monkey.patch_all()

"""

將這個(gè)程序中用到的sleep:耗時(shí)操作的

代碼gevent.sleep,換為time.sleep"""

def f1(n):

for iin range(n):

print(gevent.getcurrent(), i)

time.sleep(0.5)

# gevent.sleep(0.5)

? ? ? ? """循環(huán)遍歷數(shù)字5,遍歷一次延時(shí)0.5"""

def f2(n):

for iin range(n):

print(gevent.getcurrent(), i)

time.sleep(0.5)

# gevent.sleep(0.5)

def f3(n):

for iin range(n):

print(gevent.getcurrent(), i)

time.sleep(0.5)

# gevent.sleep(0.5)

"""

1、程序啟動(dòng)稱為:進(jìn)程(資源分配的單位);

2宣脉、執(zhí)行代碼的是:線程

3车柠、單線程里執(zhí)行多任務(wù):協(xié)程

進(jìn)程關(guān)閉、線程、協(xié)程隨之掛掉

"""

print("---1---")

g1 = gevent.spawn(f1, 5)

"""參數(shù)f指定協(xié)程在哪執(zhí)行, 需要傳參就在后邊直接寫"""

print("---2---")

g2 = gevent.spawn(f2, 5)

print("---3---")

g3 = gevent.spawn(f3, 5)

print("---4---")

g1.join()

g2.join()

g3.join()

"""

recvfrom()? #阻塞

# socket.connect()

# socket.accepet()

gevent.connect()

gevent.accepet()

"""

三竹祷、43_(1)圖片下載器

"""gevent案例: 并發(fā)下載器"""

import urllib.request#爬蟲經(jīng)常用

# urllib.request.urlopen()

"""在urlopen()寫上網(wǎng)址,可以和網(wǎng)址溝通"""

req = urllib.request.urlopen("http://www.baidu.con")

print(req.read())# read(): 讀

四谈跛、43_(2)gevent_img_xzq

import urllib.request

"""gevent圖片下載器"""

import gevent

from geventimport monkey

"""

爬多張圖片可以封裝成函數(shù),

一個(gè)函數(shù)應(yīng)該完成一個(gè)功能

"""

monkey.patch_all()

"""

將這個(gè)程序中用到的sleep:耗時(shí)操作的

代碼gevent.sleep,換為time.sleep"""

def Pa1Ztu(img_name, img_url):

"""# img_name==(圖片名. 格式)"""

? ? req = urllib.request.urlopen(img_url)

img_content = req.read()#讀圖

? ? with open(img_name, "wb")as f:

f.write(img_content)

"""? ? ? ? !把圖片保存到文件!

open:打開文件】, 第一個(gè)參數(shù)為圖片名和

保存形式【wb:二進(jìn)制的寫入】拿到的圖

片是二進(jìn)制的,【write:寫入"""

"""def miam():爬多張圖的函數(shù)功能"""

def main():

gevent.joinall([

gevent.spawn(Pa1Ztu, "1.png", "http://p3.fx.kgimg.com/v2/fxuserlogo/00ea60c75e06bf74fce5507878e53a59.jpg_200x200.jpg"),

? ? ? ? # gevent.spawn(PaYiZTu, "2.jpg", "")

? ? ])

if __name__ =="__main__":

main()

五、45_http協(xié)議1

一塑陵、瀏覽器向服務(wù)器發(fā)送的(請(qǐng)求)格式

1感憾、GET: 瀏覽器向服務(wù)器索取數(shù)據(jù)(資源)

2、GET后面的是請(qǐng)求的網(wǎng)址名令花、協(xié)議版本

3吹菱、Host: 服務(wù)器的Ip地址、端口

4彭则、keep-alive: 長鏈接

5鳍刷、Accept: 服務(wù)器可以接收的數(shù)據(jù)格式

6、User-Agent: 瀏覽器的版本

7俯抖、Accept-Encoding: 能夠接收的壓縮格式

8输瓜、Accept-Language: 能接收的語言

二、服務(wù)器-->瀏覽器回送的數(shù)據(jù)格式如下:

1芬萍、Cache-Control:private 緩存是共享或私有的, 目前私有

2尤揣、Content-Encoding: 編碼格式, 瀏覽器按此格式解壓

3、Content-Type: 傳輸?shù)氖且粋€(gè)html的頁面

4柬祠、Date: 服務(wù)器當(dāng)前的時(shí)間

5北戏、Server: 服務(wù)器, Bws是百度的服務(wù)器

6、Set-Cookie: 類似于xx服務(wù)器收集用戶的信息數(shù)據(jù)

三漫蛔、http(超文本傳輸)協(xié)議: 基于Tcp

六嗜愈、47_簡單web服務(wù)器實(shí)現(xiàn)

"""

http(超文本傳輸)協(xié)議: 基于Tcp

Tcp類似于2人通話可以接收到(穩(wěn)定);

Cdp類似于廣播, 有可能接收不到

"""

"""實(shí)現(xiàn)簡單的http服務(wù)器"""

import socket

def service_client(new_socket):

"""為客戶端返回?cái)?shù)據(jù)"""

? ? # 1、接收瀏覽器發(fā)送過來的請(qǐng)求, 即http請(qǐng)求

# -->例GET / HTTP/1.1 .....

? ? requst = new_socket.recv(1024)

print(requst)

# 2莽龟、返回http格式的數(shù)據(jù)給瀏覽器

# 2.1 準(zhǔn)備給瀏覽器發(fā)送的數(shù)據(jù) :Header

? ? response ="HTTP/1.1 200 OK\r\n"

? ? response +="\r\n"

? ? """【\r\n: 換行(兼容所有的瀏覽器)】"""

? ? # 2.2 準(zhǔn)備給瀏覽器發(fā)送的數(shù)據(jù) :Body

? ? response +="

hehehe

"

? ? new_socket.send(response.encode("utf-8"))

"""【send: 發(fā)送【encode: 編碼】"""

? ? # 關(guān)閉套接字

? ? new_socket.close()

def main():

"""用來整體控制"""

? ? # 1蠕嫁、創(chuàng)建套接字

? ? tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

tcp_server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

"""選擇讓服務(wù)端先關(guān)閉"""

? ? # 2、綁定; 參數(shù)("任意服務(wù)端ip", 端口)

? ? tcp_server_socket.bind(("", 7890))

# 3毯盈、變?yōu)楸O(jiān)聽的套接字; 【listen:最大鏈接數(shù)】

? ? tcp_server_socket.listen(128)

while True:

# 4剃毒、等待新客戶端的連接; 變量[新客戶端的套接字, 客戶端的IP、端口]

? ? ? ? new_socket, client_addr = tcp_server_socket.accept()

# 5搂赋、為這個(gè)客戶端服務(wù)

? ? ? ? service_client(new_socket)

# 6赘阀、關(guān)閉監(jiān)聽套接字

? ? tcp_server_socket.close(new_socket)

if __name__ =='__main__':

main()


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市脑奠,隨后出現(xiàn)的幾起案子基公,更是在濱河造成了極大的恐慌,老刑警劉巖捺信,帶你破解...
    沈念sama閱讀 222,946評(píng)論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件酌媒,死亡現(xiàn)場離奇詭異欠痴,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)秒咨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,336評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門喇辽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人雨席,你說我怎么就攤上這事菩咨。” “怎么了陡厘?”我有些...
    開封第一講書人閱讀 169,716評(píng)論 0 364
  • 文/不壞的土叔 我叫張陵抽米,是天一觀的道長。 經(jīng)常有香客問我糙置,道長云茸,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,222評(píng)論 1 300
  • 正文 為了忘掉前任谤饭,我火速辦了婚禮标捺,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘揉抵。我一直安慰自己亡容,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,223評(píng)論 6 398
  • 文/花漫 我一把揭開白布冤今。 她就那樣靜靜地躺著闺兢,像睡著了一般。 火紅的嫁衣襯著肌膚如雪戏罢。 梳的紋絲不亂的頭發(fā)上屋谭,一...
    開封第一講書人閱讀 52,807評(píng)論 1 314
  • 那天,我揣著相機(jī)與錄音帖汞,去河邊找鬼戴而。 笑死,一個(gè)胖子當(dāng)著我的面吹牛翩蘸,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播淮逊,決...
    沈念sama閱讀 41,235評(píng)論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼催首,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了泄鹏?” 一聲冷哼從身側(cè)響起郎任,我...
    開封第一講書人閱讀 40,189評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎备籽,沒想到半個(gè)月后舶治,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體分井,經(jīng)...
    沈念sama閱讀 46,712評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,775評(píng)論 3 343
  • 正文 我和宋清朗相戀三年霉猛,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了尺锚。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,926評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡惜浅,死狀恐怖瘫辩,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情坛悉,我是刑警寧澤伐厌,帶...
    沈念sama閱讀 36,580評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站裸影,受9級(jí)特大地震影響挣轨,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜轩猩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,259評(píng)論 3 336
  • 文/蒙蒙 一刃唐、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧界轩,春花似錦画饥、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,750評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至葫慎,卻和暖如春衔彻,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背偷办。 一陣腳步聲響...
    開封第一講書人閱讀 33,867評(píng)論 1 274
  • 我被黑心中介騙來泰國打工艰额, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人椒涯。 一個(gè)月前我還...
    沈念sama閱讀 49,368評(píng)論 3 379
  • 正文 我出身青樓柄沮,卻偏偏與公主長得像,于是被迫代替她去往敵國和親废岂。 傳聞我的和親對(duì)象是個(gè)殘疾皇子祖搓,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,930評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • 一、總體內(nèi)容 1.1湖苞、協(xié)程的介紹 1.2拯欧、迭代器以及迭代器的應(yīng)用 1.3、生成器(生成器與迭代器保存的都是生成數(shù)據(jù)...
    IIronMan閱讀 861評(píng)論 0 1
  • 協(xié)程 閱讀目錄 一 引子 二 協(xié)程介紹 三 Greenlet模塊 四 Gevent模塊 引子 之前我們學(xué)習(xí)了線程藏姐、...
    go以恒閱讀 717評(píng)論 0 1
  • 迭代、迭代器该贾、生成器羔杨、協(xié)程、yield靶庙、greenlet问畅、gevent、進(jìn)程線程協(xié)程對(duì)比六荒、gevent多任務(wù)圖片下...
    Cestine閱讀 491評(píng)論 0 0
  • 參考資料 http://www.gevent.org/contents.html https://uwsgi-do...
    JunChow520閱讀 16,899評(píng)論 0 10
  • 寫在前面的話 代碼中的# > 表示的是輸出結(jié)果 輸入 使用input()函數(shù) 用法 注意input函數(shù)輸出的均是字...
    FlyingLittlePG閱讀 2,771評(píng)論 0 8