2018-10-25day20多線程基礎(chǔ)

一、進(jìn)程

1、什么是進(jìn)程

在系統(tǒng)中正在運(yùn)行的一個(gè)應(yīng)用程序
特點(diǎn):每個(gè)進(jìn)程之間是獨(dú)立的回季,每個(gè)進(jìn)程運(yùn)行在其專用且受保護(hù)的內(nèi)存空間內(nèi)

2、線程
  • 什么是線程
  • 1個(gè)進(jìn)程想要執(zhí)行任務(wù)正林,必須得有線程(至少有一個(gè))
  • 進(jìn)程的所有任務(wù)都在線程中執(zhí)行
  • 特點(diǎn):
    串行:如果想要在1個(gè)進(jìn)程中執(zhí)行多個(gè)任務(wù)泡一,那么每個(gè)任務(wù)只能按順序逐個(gè)執(zhí)行(同一時(shí)間1個(gè)線程只能執(zhí)行1個(gè)任務(wù))
3、多線程

a. 什么是多線程

  • 1個(gè)進(jìn)程中可以開啟多條線程觅廓,每條線程可以并行(同時(shí))(執(zhí)行不同的任務(wù))
  • 多線程可以提高程序的執(zhí)行效率

b. 多線程的原理

  • 注意:同一時(shí)間鼻忠,CPU只能處理一條線程,只有1條線程在工作(執(zhí)行)
  • 多線程并發(fā)(同時(shí))執(zhí)行杈绸,其實(shí)CPU快速地在多線程之間進(jìn)行調(diào)度(切換)
  • 劣勢:線程很多時(shí)會(huì)大量消耗CPU資源
    每條線程被調(diào)度執(zhí)行的頻次會(huì)降低(線程執(zhí)行效率降低)

二帖蔓、多線程程序

  • 每個(gè)程序在運(yùn)行的時(shí)候(進(jìn)程)系統(tǒng)都會(huì)為這個(gè)進(jìn)程創(chuàng)建一個(gè)線程矮瘟,這個(gè)程序叫主線程,程序員自己創(chuàng)建的線程叫子線程
  • 多個(gè)任務(wù)在一個(gè)線程中是按順序一個(gè)一個(gè)執(zhí)行的(線程串行)
  • 多線程的任務(wù)同時(shí)執(zhí)行
import datetime
import time
from random import randint

def download(file):
    print(file, threading.current_thread()) # 獲取當(dāng)前線程
    print(datetime.datetime.now(), '開始下載:%s' % file)
    # sleep(時(shí)間):會(huì)阻塞當(dāng)前線程指定的時(shí)間(單位:秒)
    time.sleep(randint(5, 10))
    print(datetime.datetime.now(), '下載 %s 結(jié)束' % file)

# python中怎么創(chuàng)建線程
# 通過threading標(biāo)準(zhǔn)庫來支持多線程
import threading
if __name__ == '__main__':

    print(threading.current_thread())
    # 創(chuàng)建一個(gè)線程對象
    # 方法1:
    # threading.Thread(target=, args=)
    # target:需要傳一個(gè)需要在子線程中執(zhí)行的函數(shù)(類型是function的變量)
    # args: 在子線程中調(diào)用target對應(yīng)的函數(shù)時(shí)塑娇,該傳什么參數(shù)芥永,以元祖的形式傳入
    # t1 = threading.Thread(target=download, args=('我不好',))
    # t2 = threading.Thread(target=download, args=('你好不',))
    # 讓子線程執(zhí)行任務(wù)
    # t1.start()
    # t2.start()


from threading import Thread, current_thread
from datetime import datetime

# a. 寫一個(gè)類繼承Thread類
class DownloadThread(Thread):
    """這是一個(gè)下載線程類"""
    # 如果需要給run方法中傳數(shù)據(jù),通過當(dāng)前類的屬性來傳
    def __init__(self, file):
        super().__init__()
        self.file = file

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

# b. 重寫當(dāng)前類的run方法,run方法的任務(wù)就是在子線程需要執(zhí)行的任務(wù)

# c. 創(chuàng)建當(dāng)前類的對象怠噪,就是線程對象泛范,然后還是調(diào)用start執(zhí)行線程中任務(wù)
t1 = DownloadThread('aaaa')
# 注意:如果需要將run方法中的內(nèi)容在子線程執(zhí)行,就必須通過start方法間接調(diào)用run方法,
# 如果直接調(diào)用run方法荣刑,run方法里面的內(nèi)容只會(huì)在主線程里執(zhí)行,不會(huì)再子線程執(zhí)行
t1.start()


import socket
from threading import Thread, current_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 = self.conversation.recv(1024).decode('utf-8')
            print(self.addr[0], ':', message)

            # 發(fā)送消息
            self.conversation.send('hello'.encode('utf-8'))


def create_server():
    # 創(chuàng)建服務(wù)
    sever = socket.socket()
    # 綁定ip和端口
    sever.bind(('10.7.156.141', 8080))
    # 監(jiān)聽端口
    sever.listen(100)
    print('開始監(jiān)聽')

    while True:
        # 創(chuàng)建回話
        print('等待連接......')
        conversation, addr = sever.accept()
        print(conversation)
        print(addr)
        # 創(chuàng)建處理這個(gè)請求的子線程對象
        t1 = ConversationThread(conversation, addr)
        t1.start()

# 此時(shí)進(jìn)程結(jié)束的條件是所有子線程全部結(jié)束或崩潰
if __name__ == '__main__':
    create_server()
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末能真,一起剝皮案震驚了整個(gè)濱河市雏节,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌邑跪,老刑警劉巖次坡,帶你破解...
    沈念sama閱讀 211,348評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異画畅,居然都是意外死亡砸琅,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門轴踱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來症脂,“玉大人,你說我怎么就攤上這事淫僻∮张瘢” “怎么了?”我有些...
    開封第一講書人閱讀 156,936評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵雳灵,是天一觀的道長棕所。 經(jīng)常有香客問我,道長悯辙,這世上最難降的妖魔是什么琳省? 我笑而不...
    開封第一講書人閱讀 56,427評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮笑撞,結(jié)果婚禮上岛啸,老公的妹妹穿的比我還像新娘。我一直安慰自己茴肥,他們只是感情好坚踩,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,467評(píng)論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著瓤狐,像睡著了一般瞬铸。 火紅的嫁衣襯著肌膚如雪批幌。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,785評(píng)論 1 290
  • 那天嗓节,我揣著相機(jī)與錄音荧缘,去河邊找鬼。 笑死拦宣,一個(gè)胖子當(dāng)著我的面吹牛截粗,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播鸵隧,決...
    沈念sama閱讀 38,931評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼绸罗,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了豆瘫?” 一聲冷哼從身側(cè)響起珊蟀,我...
    開封第一講書人閱讀 37,696評(píng)論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎外驱,沒想到半個(gè)月后育灸,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,141評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡昵宇,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,483評(píng)論 2 327
  • 正文 我和宋清朗相戀三年磅崭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片趟薄。...
    茶點(diǎn)故事閱讀 38,625評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡绽诚,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出杭煎,到底是詐尸還是另有隱情恩够,我是刑警寧澤,帶...
    沈念sama閱讀 34,291評(píng)論 4 329
  • 正文 年R本政府宣布羡铲,位于F島的核電站蜂桶,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏也切。R本人自食惡果不足惜扑媚,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,892評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望雷恃。 院中可真熱鬧疆股,春花似錦、人聲如沸倒槐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至两残,卻和暖如春永毅,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背人弓。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來泰國打工沼死, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人崔赌。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓意蛀,卻偏偏與公主長得像,于是被迫代替她去往敵國和親健芭。 傳聞我的和親對象是個(gè)殘疾皇子浸间,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,492評(píng)論 2 348

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

  • iOS多線程編程 基本知識(shí) 1. 進(jìn)程(process) 進(jìn)程是指在系統(tǒng)中正在運(yùn)行的一個(gè)應(yīng)用程序,就是一段程序的執(zhí)...
    陵無山閱讀 6,022評(píng)論 1 14
  • 1.ios高性能編程 (1).內(nèi)層 最小的內(nèi)層平均值和峰值(2).耗電量 高效的算法和數(shù)據(jù)結(jié)構(gòu)(3).初始化時(shí)...
    歐辰_OSR閱讀 29,336評(píng)論 8 265
  • Object C中創(chuàng)建線程的方法是什么吟榴?如果在主線程中執(zhí)行代碼,方法是什么囊扳?如果想延時(shí)執(zhí)行代碼吩翻、方法又是什么? 1...
    AlanGe閱讀 1,721評(píng)論 0 17
  • 以我能懶出花兒的性格锥咸,在為數(shù)不多的選擇里狭瞎,以就學(xué)校最近的原則,拿下了它搏予。在庭園別墅區(qū)中熊锭,這個(gè)二層小樓有些格格不...
    孫牛牛閱讀 403評(píng)論 0 0
  • 今天正式離開我的第二份工作,沒有開心雪侥,沒有難過碗殷,更不會(huì)有歡呼。就好像這只是一件很稀疏平常的事一般速缨,與吃飯锌妻,喝水別無...
    CindyZhang199閱讀 241評(píng)論 0 0