day20-多線程


一、線程

  • 定義:每個程序在運(yùn)行的時(shí)候(進(jìn)程)系統(tǒng)都會為這個進(jìn)程創(chuàng)建一個線程省咨,這個線程我們叫主線程玷室。程序員自己創(chuàng)建的線程叫子線程
    多個任務(wù)在一個線程中是按順序一個一個執(zhí)行的(線程的串行)
    多個線程的任務(wù)同時(shí)執(zhí)行

  • 實(shí)現(xiàn)方法:python通過threading標(biāo)準(zhǔn)庫來支持多線程

  • 創(chuàng)建線程方式:

    • a.直接通過Thread類創(chuàng)建對象笤受,將需要在子線程中執(zhí)行的函數(shù)作為target參數(shù)傳進(jìn)去

    • b.寫一個自己的類去繼承Thread類
      重寫當(dāng)前類的run方法敌蜂,run中的任務(wù)就是在子線程中執(zhí)行的任務(wù)創(chuàng)建當(dāng)前類的對象, 就是線程對象。然后調(diào)用start去執(zhí)行線程中任務(wù)

二章喉、例子

import time
import datetime
from random import randint
import threading


def download(file):
    print(file,threading.current_thread())
    print(datetime.datetime.now(),'開始下載:%s' % file)

    # sleep(時(shí)間): 會將當(dāng)前線程阻塞指定的時(shí)間(停指定的時(shí)間然后再往后執(zhí)行)
    # 時(shí)間單位:秒
    time1 = randint(5, 10)
    time.sleep(time1)

    print(datetime.datetime.now(),'下載%s結(jié)束'%file,'總共耗時(shí):%d' % time1)


"""
python通過threading標(biāo)準(zhǔn)庫來支持多線程
"""

if __name__ == '__main__':

    # download('肖生克的救贖')
    # current_thread()獲取當(dāng)前線程
    print(threading.current_thread())

    # 1.創(chuàng)建一個線程對象
    """
    Thread(target=, args=)
    target: 需要傳一個需要在子線程中執(zhí)行的函數(shù)(類型是function的變量)
    agrs: 在子線程中調(diào)用target對應(yīng)的函數(shù)的時(shí)候秸脱,該傳什么參數(shù)。類型是元祖
    """
    t1 = threading.Thread(target=download, args=('阿甘正傳',))
    t2 = threading.Thread(target=download, args=('肖生克的救贖',))

    # 2.讓子線程去執(zhí)行任務(wù)
    t1.start()
    t2.start()

    print('===========')

三妥色、線程和網(wǎng)絡(luò)通信的應(yīng)用

1.服務(wù)器

"""__author__ = 余婷"""

import socket
from threading import Thread


class ConversationThread(Thread):
    def __init__(self, conversation: socket.socket, addr):
        super().__init__()
        self.conversation = conversation
        self.addr = addr

    def run(self):
        # 保持通話
        while True:
            # 接收消息
            message_re = self.conversation.recv(1024).decode('utf-8')
            print(self.addr[0], ':', message_re)

            # 發(fā)送消息
            message = 'hi %s遏片,你好!' % self.addr[0]
            self.conversation.send(message.encode('utf-8'))



def creat_server():
    server = socket.socket()
    server.bind(('10.7.156.97', 8081))
    server.listen(512)

    # 讓服務(wù)器一直運(yùn)行
    while True:
        # 會阻塞線程
        conversation, addr = server.accept()

        # 創(chuàng)建處理這個請求對應(yīng)的子線程
        t = ConversationThread(conversation, addr)
        t.start()



if __name__ == '__main__':
    creat_server()

2.客戶端

"""__author__ = 余婷"""

import socket

client = socket.socket()
client.connect(('10.7.156.97', 8081))

while True:
    message = input('>>>')
    client.send(message.encode('utf-8'))

    message_re = client.recv(1024).decode('utf-8')
    print(message_re)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末吮便,一起剝皮案震驚了整個濱河市幢踏,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌房蝉,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件咧擂,死亡現(xiàn)場離奇詭異檀蹋,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)俯逾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進(jìn)店門桌肴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人坠七,你說我怎么就攤上這事旗笔±肜” “怎么了?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵艘包,是天一觀的道長耀盗。 經(jīng)常有香客問我,道長叛拷,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任裙椭,我火速辦了婚禮署浩,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘炊汤。我一直安慰自己弊攘,他們只是感情好抢腐,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布迈倍。 她就那樣靜靜地躺著捣域,像睡著了一般。 火紅的嫁衣襯著肌膚如雪竟宋。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天徒欣,我揣著相機(jī)與錄音蜗字,去河邊找鬼脂新。 笑死粗梭,一個胖子當(dāng)著我的面吹牛争便,可吹牛的內(nèi)容都是我干的断医。 我是一名探鬼主播,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼斩启,長吁一口氣:“原來是場噩夢啊……” “哼醉锅!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起硬耍,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤经柴,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后口锭,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體介杆,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡春哨,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了赴背。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,163評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡燃观,死狀恐怖便瑟,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情到涂,我是刑警寧澤颁督,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布浇雹,位于F島的核電站,受9級特大地震影響吠裆,放射性物質(zhì)發(fā)生泄漏虎锚。R本人自食惡果不足惜硫痰,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一效斑、第九天 我趴在偏房一處隱蔽的房頂上張望柱徙。 院中可真熱鬧缓屠,春花似錦护侮、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至得哆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間贩据,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工矾芙, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留近上,地道東北人。 一個月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓歼跟,卻偏偏與公主長得像,于是被迫代替她去往敵國和親哈街。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評論 2 344

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

  • 進(jìn)程和線程 進(jìn)程 所有運(yùn)行中的任務(wù)通常對應(yīng)一個進(jìn)程,當(dāng)一個程序進(jìn)入內(nèi)存運(yùn)行時(shí),即變成一個進(jìn)程.進(jìn)程是處于運(yùn)行過程中...
    勝浩_ae28閱讀 5,085評論 0 23
  • 線程 操作系統(tǒng)線程理論 線程概念的引入背景 進(jìn)程 之前我們已經(jīng)了解了操作系統(tǒng)中進(jìn)程的概念,程序并不能單獨(dú)運(yùn)行胞得,只有...
    go以恒閱讀 1,632評論 0 6
  • 1.多線程進(jìn)程:系統(tǒng)中正在運(yùn)行的一個應(yīng)用程序特點(diǎn):每個進(jìn)程都是相互獨(dú)立的阶剑,每個進(jìn)程都在其專用且受保護(hù)的內(nèi)存空間中線...
    我才是鱷魚寶寶閱讀 179評論 0 0
  • 進(jìn)程和線程 進(jìn)程 所有運(yùn)行中的任務(wù)通常對應(yīng)一個進(jìn)程,當(dāng)一個程序進(jìn)入內(nèi)存運(yùn)行時(shí),即變成一個進(jìn)程.進(jìn)程是處于運(yùn)行過程中...
    小徐andorid閱讀 2,798評論 3 53
  • 語法:select 列名1,列名2.....from 表名 where 條件素邪; 查詢所有字段 select * f...
    hello_我的哥閱讀 888評論 0 2