多線程

1.多線程技術(shù)01

"""
python內(nèi)置的threading模塊蛤铜,可以支持多線程

所有的進(jìn)程默認(rèn)都有一個(gè)線程(一般叫這個(gè)線程為主線程),其他的線程叫子線程
如果想要在進(jìn)程中添加其他的線程丛肢,就創(chuàng)建線程對(duì)象
"""
import threading
import time

def download(file, time1):
    print('開(kāi)始下載',file)
    time.sleep(time1)
    print(file, '下載結(jié)束')

if __name__ == '__main__':
    print('abc')

    # 1.創(chuàng)建線程對(duì)象
    """
    target: 需要在子線程中執(zhí)行的函數(shù)
    args: 調(diào)用函數(shù)的實(shí)參列表(參數(shù)類(lèi)型是列表)
    返回值: 線程對(duì)象
    """
    t1 = threading.Thread(target=download, args=['愛(ài)情公寓', 10])
    # 2.在子線程中執(zhí)行任務(wù)
    t1.start()

    t2 = threading.Thread(target=download, args=['狄仁杰', 5])
    t2.start()

    # download('愛(ài)情公寓')
    # download('狄仁杰')
    print('=====')

    # t3 = threading.Thread(target=input, args=['>>>'])
    # t3.start()
    value = input('>>>')
    print('!!!!')
#2.多線程技術(shù)02
"""
方式2:寫(xiě)一個(gè)自己的線程類(lèi)
1.寫(xiě)一個(gè)類(lèi)围肥,繼承自Thread類(lèi)
2.重寫(xiě)run方法,在里面規(guī)定需要在子線程中執(zhí)行的任務(wù)
3.實(shí)現(xiàn)在子線程中執(zhí)行的任務(wù)對(duì)應(yīng)的功能蜂怎,如果需要參數(shù)穆刻,通過(guò)類(lèi)的對(duì)象屬性來(lái)傳值
"""

from threading import Thread
import requests
import re



# 下載數(shù)據(jù)
class DownloadThread(Thread):
    """下載類(lèi)"""
    def __init__(self, file_path):
        super().__init__()
        self.file_path = file_path

    def run(self):
        """run方法"""
        """
        1.寫(xiě)在這個(gè)方法的內(nèi)容就是在子線程中執(zhí)行的內(nèi)容
        2.這個(gè)方法不要直接調(diào)用
        """
        print('開(kāi)始下載')
        response = requests.request('GET', self.file_path)
        data = response.content

        # 獲取文件后綴
        suffix = re.search(r'\.\w+$', self.file_path).group()

        with open('./abc'+suffix, 'wb') as f:
            f.write(data)
        print('下載完成...')


if __name__ == '__main__':
    print('=====')
    t1 = DownloadThread('http://10.7.181.117/shareX/Git.exe')
    # 通過(guò)start間接調(diào)用run方法,run方法中的任務(wù)在子線程中執(zhí)行
    t1.start()
    # 直接調(diào)用run方法杠步,run方法中的任務(wù)在當(dāng)前線程中執(zhí)行
    # t1.run()

    t2 = DownloadThread('https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1533720058151&di=766b5c97653351e805c85881ecaa57d0&imgtype=0&src=http%3A%2F%2Fx.itunes123.com%2Fuploadfiles%2Fb2ab55461e6dc7a82895c7425fc89017.jpg')
    t2.start()
#多線程應(yīng)用
    print('!!!!!')

import socket

if __name__ == '__main__':
    client = socket.socket()
    client.connect(('10.7.181.117', 8080))
    while True:
        print(client.recv(1024).decode(encoding='utf-8'))
        message = input('>>>')
        client.send(message.encode())
import socket
from threading import Thread


class CoversationThread(Thread):
    """在子線程中處理不同的客戶(hù)端會(huì)話"""
    """
    python中可以在函數(shù)參數(shù)的后面加一個(gè)冒號(hào)氢伟,來(lái)對(duì)參數(shù)的類(lèi)型進(jìn)行說(shuō)明
    """
    def __init__(self, conversation:socket.socket, address):
        super().__init__()
        self.conversation = conversation
        self.address = address

    def run(self):
        while True:
            self.conversation.send('你好!'.encode())
            print(self.address,self.conversation.recv(1024).decode(encoding='utf-8'))



if __name__ == '__main__':

    server = socket.socket()
    server.bind(('10.7.181.117', 8080))
    server.listen(512)

    while True:

        conversation, address = server.accept()
        t = CoversationThread(conversation, address)
        t.start()
        # while True:
        #     conversation.send('你好!'.encode())
        #     print(conversation.recv(1024).decode(encoding='utf-8'))

#join函數(shù)
from threading import Thread,currentThread
import time
from random import randint


class Download(Thread):
    def __init__(self, file):
        # 這兒父類(lèi)的init方法必須調(diào)用幽歼,否則當(dāng)前這個(gè)創(chuàng)建的對(duì)象中就沒(méi)有新的線程
        super().__init__()
        self.file = file

    def run(self):
        print(currentThread())
        print('開(kāi)始下載:%s' % self.file)
        time.sleep(randint(5, 10))
        print('%s下載結(jié)束' % self.file)



if __name__ == '__main__':

    # time.time(): 獲取當(dāng)前時(shí)間-時(shí)間戳
    start_time = time.time()
    t1 = Download('最強(qiáng)Z.mp4')
    t1.start()

    t2 = Download('最強(qiáng)A.mp4')
    t2.start()

    print('====')
    # 獲取當(dāng)前線程
    """
    主線程: MainThread
    子線程: Thread-數(shù)字(數(shù)字從1開(kāi)始朵锣。)
    """
    print(currentThread())

    # 如果一個(gè)任務(wù)想要在另外一個(gè)子線程中的任務(wù)執(zhí)行完成后再執(zhí)行,就在當(dāng)前任務(wù)前用子線程對(duì)象調(diào)用join方法
    # 所以join也會(huì)阻塞線程甸私,阻塞到對(duì)應(yīng)的子線程中任務(wù)執(zhí)行完為止
    t1.join()

    # t2.join()
    end_time = time.time()
    print('總共消耗時(shí)間:%.2f' % (end_time - start_time))

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末诚些,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子皇型,更是在濱河造成了極大的恐慌诬烹,老刑警劉巖砸烦,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異绞吁,居然都是意外死亡幢痘,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)掀泳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)雪隧,“玉大人,你說(shuō)我怎么就攤上這事员舵∧匝兀” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵马僻,是天一觀的道長(zhǎng)庄拇。 經(jīng)常有香客問(wèn)我,道長(zhǎng)韭邓,這世上最難降的妖魔是什么措近? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮女淑,結(jié)果婚禮上瞭郑,老公的妹妹穿的比我還像新娘。我一直安慰自己鸭你,他們只是感情好屈张,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著袱巨,像睡著了一般阁谆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上愉老,一...
    開(kāi)封第一講書(shū)人閱讀 49,111評(píng)論 1 285
  • 那天场绿,我揣著相機(jī)與錄音,去河邊找鬼嫉入。 笑死焰盗,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的咒林。 我是一名探鬼主播熬拒,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼映九!你這毒婦竟也來(lái)了梦湘?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎捌议,沒(méi)想到半個(gè)月后哼拔,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡瓣颅,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年倦逐,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片宫补。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡檬姥,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出粉怕,到底是詐尸還是另有隱情健民,我是刑警寧澤,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布贫贝,位于F島的核電站秉犹,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏稚晚。R本人自食惡果不足惜崇堵,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望客燕。 院中可真熱鬧鸳劳,春花似錦、人聲如沸也搓。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)还绘。三九已至楚昭,卻和暖如春栖袋,著一層夾襖步出監(jiān)牢的瞬間拍顷,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工塘幅, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留昔案,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓电媳,卻偏偏與公主長(zhǎng)得像踏揣,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子匾乓,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

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

  • Object C中創(chuàng)建線程的方法是什么捞稿?如果在主線程中執(zhí)行代碼,方法是什么?如果想延時(shí)執(zhí)行代碼娱局、方法又是什么彰亥? 1...
    AlanGe閱讀 1,716評(píng)論 0 17
  • 該文章轉(zhuǎn)自:http://blog.csdn.net/evankaka/article/details/44153...
    加來(lái)依藍(lán)閱讀 7,335評(píng)論 3 87
  • 每次在夜里覺(jué)得孤單的時(shí)候,總會(huì)想想衰齐,當(dāng)年單純的我(或許害羞懦弱更恰當(dāng))是怎樣一個(gè)個(gè)錯(cuò)過(guò)我生命中那些不錯(cuò)的女生的任斋。而...
    柳小落閱讀 140評(píng)論 0 0
  • 〈二〉 往前十余年是你,余生幾十年都有你耻涛。 慧小姐出生于千禧年年末废酷,我比她大,生于上世紀(jì)末抹缕。時(shí)間久遠(yuǎn)澈蟆,我都...
    性別貓閱讀 226評(píng)論 0 0
  • 趁著元旦之際,和張先生來(lái)了次天津之行卓研。 因?yàn)楸本┚嚯x天津很近丰介,預(yù)期兩天的行程,晚上高鐵回北京鉴分。 剛出地鐵口哮幢,就看見(jiàn)...
    淺淺婷閱讀 629評(píng)論 0 0