線程和進(jìn)程

同步和異步
同步和異步是相對于操作結(jié)果來說,會不會等待結(jié)果

阻塞和非阻塞
阻塞是在煮稀飯的過程中砰蠢,你不能去干其他的事情婆咸。非阻塞是在煮稀飯的過程中,你還可以去做其他的事情筷屡。阻塞和非阻塞是相對于線程是否被阻塞

并發(fā)和并行
如果某個系統(tǒng)支持兩個或者多個動作(Action)同時存在涧偷,那么這個系統(tǒng)就是一個并發(fā)系統(tǒng)。如果某個系統(tǒng)支持兩個或者多個動作同時執(zhí)行毙死,那么這個系統(tǒng)就是一個并行系統(tǒng)燎潮。并發(fā)系統(tǒng)與并行系統(tǒng)這兩個定義之間的關(guān)鍵差異在于“存在”這個詞。
并行”概念是“并發(fā)”概念的一個子集扼倘。也就是說确封,你可以編寫一個擁有多個線程或者進(jìn)程的并發(fā)程序,但如果沒有多核處理器來執(zhí)行這個程序,那么就不能以并行方式來運(yùn)行代碼爪喘。因此颜曾,凡是在求解單個問題時涉及多個執(zhí)行流程的編程模式或者執(zhí)行行為,都屬于并發(fā)編程的范疇秉剑。
并發(fā)

5a0c72f510595a240e7de0644e65fd59_hd.jpg

并行
ebc6b9ce334985dc3f6d906a06579ead_hd (1).jpg

進(jìn)程

進(jìn)程即正在執(zhí)行的一個過程泛豪。進(jìn)程是對正在運(yùn)行程序的一個抽象。操作系統(tǒng)以進(jìn)程為單位分配存儲空間侦鹏,每個進(jìn)程都有自己的地址空間候址、數(shù)據(jù)棧以及其他用于跟蹤進(jìn)程執(zhí)行的輔助數(shù)據(jù),操作系統(tǒng)管理所有進(jìn)程的執(zhí)行种柑,為它們合理的分配資源。進(jìn)程可以通過fork或spawn的方式來創(chuàng)建新的進(jìn)程來執(zhí)行其他的任務(wù)匹耕,不過新的進(jìn)程也有自己獨(dú)立的內(nèi)存空間,因此必須通過進(jìn)程間通信機(jī)制(IPC,Inter-Process Communication)來實(shí)現(xiàn)數(shù)據(jù)共享湃望,具體的方式包括管道耕驰、信號、套接字既鞠、共享內(nèi)存區(qū)等煤傍。

multiprocessing模塊提供了一個Process類來代表一個進(jìn)程對象
多個進(jìn)程可以同時進(jìn)行,使用join阻塞進(jìn)程


import os
import time
from random import randint
from multiprocessing import Process


def coding():

    print('開始擼代碼,PID是%s' % os.getpid())
    time.sleep(randint(1, 3))
    print('寫累了嘱蛋,不擼了蚯姆,PID是%s' % os.getpid())


def play_weixin():

    print('玩一會微信,PID是%s' % os.getpid())
    time.sleep(randint(1, 2))
    print('不玩微信了洒敏,開始擼代碼龄恋,PID是%s' % os.getpid())


if __name__ == '__main__':

    # 創(chuàng)建進(jìn)程
    p1 = Process(target=coding)
    p2 = Process(target=coding)
    p3 = Process(target=play_weixin)

    # 啟動進(jìn)程
    p1.start()
    # 阻塞進(jìn)程p1
    # p1.join()

    # 啟動進(jìn)程
    p2.start()
    p3.start()

    # 主進(jìn)程
    while True:
        time.sleep(3)
        print('我是主進(jìn)程,PID是%s' % os.getpid())


線程

一個進(jìn)程中的多個線程可以共享一個資源內(nèi)存空間

Python的標(biāo)準(zhǔn)庫提供了兩個模塊:thread和threading凶伙,thread是低級模塊郭毕,threading是高級模塊,對thread進(jìn)行了封裝函荣。絕大多數(shù)情況下显押,我們只需要使用threading這個高級模塊。

啟動一個線程,創(chuàng)建threading的實(shí)例傻挂,然后直接start()就可以啟動我們定義的線程了乘碑。

start和run的區(qū)別
start() 方法是啟動一個子線程,線程名就是我們定義的name踊谋,或者默認(rèn)的線程名Thread-1蝉仇, 
Thread-2......
run() 方法并不啟動一個新線程,就是在主線程中調(diào)用了一個普通函數(shù)而已。
# !/usr/bin/env/python
# .*. encoding:utf-8 -*-
import threading
import time
class DataCopy(threading.Thread):

    def __init__(self, dbname):
        super(DataCopy, self).__init__()
        self.dbName = dbname

    def run(self):
        print('Thread %s is running' % threading.current_thread().name)
        print('開始備份數(shù)據(jù)庫:%s' % self.dbName)
        time.sleep(5)
        print('數(shù)據(jù)庫%s備份結(jié)束' % self.dbName)
        print('Thread %s is ended' % threading.current_thread().name)

thread1 = DataCopy('database1')

# 守護(hù)線程,只要主線程結(jié)束,子線程就結(jié)束
thread1.daemon = True
thread1.start()

# 線程阻塞
# thread1.join()


print('End')

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末轿衔,一起剝皮案震驚了整個濱河市沉迹,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌害驹,老刑警劉巖鞭呕,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異宛官,居然都是意外死亡葫松,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進(jìn)店門底洗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來腋么,“玉大人,你說我怎么就攤上這事亥揖∩豪蓿” “怎么了?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵费变,是天一觀的道長摧扇。 經(jīng)常有香客問我,道長挚歧,這世上最難降的妖魔是什么扛稽? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮滑负,結(jié)果婚禮上在张,老公的妹妹穿的比我還像新娘。我一直安慰自己矮慕,他們只是感情好瞧掺,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著凡傅,像睡著了一般辟狈。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上夏跷,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天哼转,我揣著相機(jī)與錄音,去河邊找鬼槽华。 笑死壹蔓,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的猫态。 我是一名探鬼主播佣蓉,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼披摄,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了勇凭?” 一聲冷哼從身側(cè)響起疚膊,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎虾标,沒想到半個月后寓盗,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡璧函,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年傀蚌,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蘸吓。...
    茶點(diǎn)故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡善炫,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出库继,到底是詐尸還是另有隱情销部,我是刑警寧澤,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布制跟,位于F島的核電站,受9級特大地震影響酱虎,放射性物質(zhì)發(fā)生泄漏雨膨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一读串、第九天 我趴在偏房一處隱蔽的房頂上張望聊记。 院中可真熱鬧,春花似錦恢暖、人聲如沸排监。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽舆床。三九已至,卻和暖如春嫁佳,著一層夾襖步出監(jiān)牢的瞬間挨队,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工蒿往, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留盛垦,地道東北人。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓瓤漏,卻偏偏與公主長得像腾夯,于是被迫代替她去往敵國和親颊埃。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評論 2 348

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