HTTP協(xié)議和多線程基礎(chǔ)

1.線程

每個進程默認都有一條線程尉辑,這個線程叫主線程蛹找。其它線程叫子線程

threading模塊中Thread的對象就是線程對象候齿,當(dāng)程序中需要子線程就創(chuàng)建Thread類的對象

def download(film_name):
    print('開始下載%s:%s'%(film_name,datetime.now()))
    sleep(3)
    print('{}下載結(jié)束:{}'.format(film_name,datetime.now()))

# 主線程
if __name__ == '__main__':

    # # 單線程
    # download('魔童降世')
    # download('掃毒2')
    # download('怦然心動')
    # 1.創(chuàng)建線程對象
    """
    Thread(target=None,args=())
    target  -  函數(shù)類型(function),這個函數(shù)在線程啟動的時候這個函數(shù)會在子線程中執(zhí)行
    args  -  元祖茶没,元祖中的元素就是target對應(yīng)的函數(shù)在子線程中調(diào)用的時候傳的實參
    """
    t1 = threading.Thread(target=download,args=('魔童降世',))
    t2 = threading.Thread(target=download,args=('掃毒2',))
    t3 = threading.Thread(target=download,args=('怦然心動',))
    # 獲取當(dāng)前線程
    print(threading.current_thread())
    # 2.啟動線程
    """
    線程對象.start()  -  讓線程去執(zhí)行線程中的任務(wù)
    target(*args)
    """
    t1.start()
    t2.start()
    t3.start()

http請求

python中有一個第三方庫叫'requests'中提供了所有和HTTP請求相關(guān)的函數(shù)

1.get請求

"""
get(url,params=None) - 發(fā)送請求獲取服務(wù)器返回的響應(yīng)

url - 請求地址
params - 請求參數(shù)筒占,字典
"""

方法一:(既適用于get也適用于post,只需把get換成post)

# url = 'https://www.apiopen.top/satinApi'
# params = {'type':1,'page':2}
# response = requests.get(url,params)
# print(response)

方法二:只能用于get請求

url = 'https://www.apiopen.top/satinApi?type=1&page=1'
response = requests.get(url)
print(response)

2.獲取請求結(jié)果

1)響應(yīng)頭:字典形式打印

print(response.headers)

2)響應(yīng)體

a.獲取二進制對應(yīng)的原數(shù)據(jù)(數(shù)據(jù)本身是圖片蛛株、壓縮文件虚婿、視頻等文件數(shù)據(jù))

content = response.content

b.獲取字符類型的數(shù)據(jù)

text = response.text

c.獲取json數(shù)據(jù)(json轉(zhuǎn)換成python對應(yīng)的數(shù)據(jù))

json = response.json()

多線程

程序結(jié)束

  • 線程中的任務(wù)執(zhí)行完成線程就結(jié)束;
  • 程序出現(xiàn)異常結(jié)束的是線程泳挥,不是進程
  • 進程中的所有線程都結(jié)束進程才結(jié)束然痊;

1.聲明一個類繼承Thread

2.實現(xiàn)類中的run方法,這個方法中的代碼就是需要在子線程中執(zhí)行的代碼

3.需要子線程的時候就創(chuàng)建自己聲明的類的對象屉符,并且不需要任何參數(shù)

用函數(shù)的方法

from threading import *
from datetime import datetime
from time import *
from random import randint


def download(film_name):
    print('開始下載{}:{}'.format(film_name,datetime.now()))
    sleep(randint(3,7))
    print('{}下載結(jié)束:{}'.format(film_name,datetime.now()))


if __name__ == '__main__':


    t1 = Thread(target=download,args=('魔童降世',))
    t2 = Thread(target=download,args=('掃毒2',))
    t3 = Thread(target=download,args=('怦然心動',))

    t1.start()
    t2.start()
    t3.start()

join的用法
線程對象.join() - 當(dāng)前線程對象任務(wù)執(zhí)行完成后才能去執(zhí)行后面的代碼

用面向?qū)ο蟮姆椒ǎ?/h3>
class DownloadThread(Thread):
    def __init__(self,film_name):
        super().__init__()
        self.film_name = film_name


    def run(self) -> None:
        print('開始下載%s:%s' % (self.film_name, datetime.now()))
        sleep(3)
        print('{}下載結(jié)束:{}'.format(self.film_name, datetime.now()))

if __name__ == '__main__':
    t1 = DownloadThread('魔童降世')
    t2 = DownloadThread('掃毒2')
    t1.start()  # 會自動調(diào)用run方法
    t2.start()
    # 1.join的用法
    """
    線程對象.join()   -   當(dāng)前線程對象任務(wù)執(zhí)行完成后才能去執(zhí)行后面的代碼
    """
    # 當(dāng)t1下載完成就打印
    # t1.join()
    # print('下載完成>缃G乱!')

    # 全部下載完成才執(zhí)行
    t1.join()
    t2.join()
    t3.join()
    print('下載完成K粝恪O颖洹!')

    # 情況2:讓任務(wù)有序進行
    t1.start()
    t1.join()
    t2.start()
    t2.join()
    t3.start()

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末躬它,一起剝皮案震驚了整個濱河市腾啥,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌冯吓,老刑警劉巖倘待,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異组贺,居然都是意外死亡凸舵,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進店門失尖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來啊奄,“玉大人,你說我怎么就攤上這事掀潮」娇洌” “怎么了?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵仪吧,是天一觀的道長庄新。 經(jīng)常有香客問我,道長邑商,這世上最難降的妖魔是什么摄咆? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任凡蚜,我火速辦了婚禮人断,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘朝蜘。我一直安慰自己恶迈,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布谱醇。 她就那樣靜靜地躺著暇仲,像睡著了一般。 火紅的嫁衣襯著肌膚如雪副渴。 梳的紋絲不亂的頭發(fā)上奈附,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天,我揣著相機與錄音煮剧,去河邊找鬼斥滤。 笑死将鸵,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的佑颇。 我是一名探鬼主播顶掉,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼挑胸!你這毒婦竟也來了痒筒?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤茬贵,失蹤者是張志新(化名)和其女友劉穎簿透,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體闷沥,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡萎战,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了舆逃。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蚂维。...
    茶點故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖路狮,靈堂內(nèi)的尸體忽然破棺而出虫啥,到底是詐尸還是另有隱情,我是刑警寧澤奄妨,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布涂籽,位于F島的核電站,受9級特大地震影響砸抛,放射性物質(zhì)發(fā)生泄漏评雌。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一直焙、第九天 我趴在偏房一處隱蔽的房頂上張望景东。 院中可真熱鬧,春花似錦奔誓、人聲如沸斤吐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽和措。三九已至,卻和暖如春蜕煌,著一層夾襖步出監(jiān)牢的瞬間派阱,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工斜纪, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留贫母,地道東北人故响。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像颁独,于是被迫代替她去往敵國和親彩届。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,960評論 2 355

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

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,103評論 1 32
  • 國家電網(wǎng)公司企業(yè)標準(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報批稿:20170802 前言: 排版 ...
    庭說閱讀 10,974評論 6 13
  • 本文出自 Eddy Wiki 誓酒,轉(zhuǎn)載請注明出處:http://eddy.wiki/interview-java.h...
    eddy_wiki閱讀 2,127評論 0 14
  • 線程 操作系統(tǒng)線程理論 線程概念的引入背景 進程 之前我們已經(jīng)了解了操作系統(tǒng)中進程的概念靠柑,程序并不能單獨運行寨辩,只有...
    go以恒閱讀 1,645評論 0 6
  • 現(xiàn)在,閉上眼感受一下歼冰,你的身體部位是不是感到僵硬靡狞、緊張?比如脖子和胸口發(fā)緊隔嫡、頭疼等等甸怕;同時,你可能感覺情緒很煩躁腮恩、...
    遙唯芳華閱讀 4,435評論 0 0