2019-08-15

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

python中有一個(gè)第三方庫(kù)叫'requests'中提供了所有和http請(qǐng)求相關(guān)的函數(shù)

import requests
# 1.get請(qǐng)求
"""
get(url, params=None)  - 發(fā)送請(qǐng)求獲取服務(wù)器返回的響應(yīng)
url - 請(qǐng)求地址, 字符串
params - 請(qǐng)求參數(shù), 字典
"""
# 方法一: (既適用于get也適用于post)
url = 'https://www.apiopen.top/satinApi'
params = {'type': 1, 'page': 2}
response = requests.get(url, params)
print(response)

# 方法二: 只能用于get請(qǐng)求
url = 'https://www.apiopen.top/satinApi?type=1&page=1'
response = requests.get(url)
# print(response)

# 2.獲取請(qǐng)求結(jié)果
# 1)響應(yīng)頭
# {'Server': 'nginx', 'Date': 'Thu, 15 Aug 2019 03:39:09 GMT', 'Content-Type': 'application/json;charset=utf-8', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Methods': 'POST, GET, OPTIONS, DELETE', 'Access-Control-Max-Age': '3600', 'Access-Control-Allow-Headers': 'x-requested-with'}
print(response.headers)

# 2)響應(yīng)體(數(shù)據(jù))
# a.獲取二進(jìn)制對(duì)應(yīng)的原數(shù)據(jù)(數(shù)據(jù)本身是圖片、壓縮文件闰挡、視頻等文件數(shù)據(jù))
content = response.content
print(type(content))

# b.獲取字符類型的數(shù)據(jù)
text = response.text
print(type(text))

# c.獲取json數(shù)據(jù)(json轉(zhuǎn)換成python對(duì)應(yīng)的數(shù)據(jù))
json = response.json()
print(type(json))
print(json)

每個(gè)進(jìn)程默認(rèn)都有一條線程循签,這個(gè)線程叫主線程熄攘。其他線程叫子線程

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

import threading
from datetime import datetime
from time import sleep
def download(film_name):
    # film_name = '魔童降世'
    print('開始下載%s:%s' % (film_name, datetime.now()))
    print(film_name, threading.current_thread())
    sleep(5)
    print('%s下載結(jié)束:%s' % (film_name, datetime.now()))


if __name__ == '__main__':
    # download('魔童降世')
    # download('掃毒2')
    # download('怦然心動(dòng)')

    # 1.創(chuàng)建線程對(duì)象
    """
    Thread(target=None,args=())  - 創(chuàng)建并且返回一個(gè)子線程對(duì)象
    target  -  函數(shù)類型(function), 在線程啟動(dòng)的時(shí)候這個(gè)函數(shù)會(huì)在子線程中執(zhí)行
    args - 元祖勤哗,元祖中的元素就是target對(duì)應(yīng)的函數(shù)在子線程中調(diào)用的時(shí)候傳的實(shí)參
    """
    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.啟動(dòng)線程
    """
    線程對(duì)象.start()  - 讓線程去執(zhí)行線程中的任務(wù)
   
    target(*args)
    """
    t1.start()
    t2.start()
    t3.start()

線程中的任務(wù)執(zhí)行完成線程就結(jié)束; 程序出現(xiàn)異常結(jié)束的是線程抡爹,不是進(jìn)程

進(jìn)程中的所有線程就結(jié)束進(jìn)程才結(jié)束;

from threading import *
from datetime import datetime
from  time import sleep
# 程序結(jié)束

# 1.聲明一個(gè)類繼承Thread
# 2.實(shí)現(xiàn)類中的run方法,這個(gè)方法中的代碼就是需要在子線程中執(zhí)行的代碼
# 3.需要子線程的時(shí)候就創(chuàng)建自己聲明的類的對(duì)象芒划,并且不需要任何參數(shù)
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()))
        print(current_thread())
        sleep(5)
        print('%s下載結(jié)束:%s' % (self.film_name, datetime.now()))


if __name__ == '__main__':
    t1 = DownloadThread('魔童降世')
    t2 = DownloadThread('掃毒')

    t1.start()
    t2.start()
    print([1, 2, 3][10])

    print('==============')
from threading import *
from datetime import datetime
from time import *
from random import randint
def download(film_name):
    print('開始下載%s:%s' % (film_name, datetime.now()))
    sleep(randint(2, 7))
    print('%s下載結(jié)束:%s' % (film_name, datetime.now()))


if __name__ == '__main__':
    # 1.join的用法
    """
    線程對(duì)象.join()   -  當(dāng)前線程對(duì)象任務(wù)執(zhí)行完成后才能去執(zhí)行后面的代碼
    """
    t1 = Thread(target=download, args=('魔童降世',))
    t2 = Thread(target=download, args=('掃毒2',))
    t3 = Thread(target=download, args=('怦然心動(dòng)',))

    # 情況一:三個(gè)電影都下載完成才執(zhí)行'下載完成!!!'
    # t1.start()
    # t2.start()
    # t3.start()
    #
    # t1.join()
    # t2.join()
    # t3.join()
    # print('下載完成!!!!')

    # 情況二: 電影1下載完成后才開始同時(shí)下載電影2和電影3
    t1.start()
    t1.join()
    t2.start()
    t3.start()
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末豁延,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子腊状,更是在濱河造成了極大的恐慌,老刑警劉巖苔可,帶你破解...
    沈念sama閱讀 218,036評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件缴挖,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡焚辅,警方通過(guò)查閱死者的電腦和手機(jī)映屋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門苟鸯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人棚点,你說(shuō)我怎么就攤上這事早处。” “怎么了瘫析?”我有些...
    開封第一講書人閱讀 164,411評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵砌梆,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我贬循,道長(zhǎng)咸包,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,622評(píng)論 1 293
  • 正文 為了忘掉前任杖虾,我火速辦了婚禮烂瘫,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘奇适。我一直安慰自己坟比,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,661評(píng)論 6 392
  • 文/花漫 我一把揭開白布嚷往。 她就那樣靜靜地躺著葛账,像睡著了一般。 火紅的嫁衣襯著肌膚如雪间影。 梳的紋絲不亂的頭發(fā)上注竿,一...
    開封第一講書人閱讀 51,521評(píng)論 1 304
  • 那天,我揣著相機(jī)與錄音魂贬,去河邊找鬼巩割。 笑死,一個(gè)胖子當(dāng)著我的面吹牛付燥,可吹牛的內(nèi)容都是我干的宣谈。 我是一名探鬼主播,決...
    沈念sama閱讀 40,288評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼键科,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼闻丑!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起勋颖,我...
    開封第一講書人閱讀 39,200評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤嗦嗡,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后饭玲,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體侥祭,經(jīng)...
    沈念sama閱讀 45,644評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,837評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了矮冬。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片谈宛。...
    茶點(diǎn)故事閱讀 39,953評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖胎署,靈堂內(nèi)的尸體忽然破棺而出吆录,到底是詐尸還是另有隱情,我是刑警寧澤琼牧,帶...
    沈念sama閱讀 35,673評(píng)論 5 346
  • 正文 年R本政府宣布恢筝,位于F島的核電站,受9級(jí)特大地震影響障陶,放射性物質(zhì)發(fā)生泄漏滋恬。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,281評(píng)論 3 329
  • 文/蒙蒙 一抱究、第九天 我趴在偏房一處隱蔽的房頂上張望恢氯。 院中可真熱鬧,春花似錦鼓寺、人聲如沸勋拟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)敢靡。三九已至,卻和暖如春苦银,著一層夾襖步出監(jiān)牢的瞬間啸胧,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工幔虏, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留纺念,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,119評(píng)論 3 370
  • 正文 我出身青樓想括,卻偏偏與公主長(zhǎng)得像陷谱,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子瑟蜈,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,901評(píng)論 2 355

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

  • 一烟逊、HTTP協(xié)議簡(jiǎn)介 1. 什么是URL URL的全稱是統(tǒng)一資源定位符 通過(guò)一個(gè)URL可以找到互聯(lián)網(wǎng)上唯一的一個(gè)資...
    Lis_reak閱讀 120評(píng)論 0 0
  • 一、http python中有一個(gè)第三方庫(kù)叫'requests'中提供了所有和http請(qǐng)求相關(guān)的函數(shù)铺根。 1.get...
    浩子_唯一號(hào)閱讀 307評(píng)論 0 1
  • 線程 操作系統(tǒng)線程理論 線程概念的引入背景 進(jìn)程 之前我們已經(jīng)了解了操作系統(tǒng)中進(jìn)程的概念位迂,程序并不能單獨(dú)運(yùn)行眷唉,只有...
    go以恒閱讀 1,641評(píng)論 0 6
  • 協(xié)議和多線程基礎(chǔ) review 1.服務(wù)器套接字 創(chuàng)建套接字對(duì)象 綁定ip和端口 開始監(jiān)聽 保證程序一直運(yùn)行(死循...
    漫磋嗟閱讀 294評(píng)論 0 0
  • 一予颤、Python簡(jiǎn)介和環(huán)境搭建以及pip的安裝 4課時(shí)實(shí)驗(yàn)課主要內(nèi)容 【Python簡(jiǎn)介】: Python 是一個(gè)...
    _小老虎_閱讀 5,746評(píng)論 0 10