日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 综合教程 >内容正文

综合教程

python之-线程原理-开启线程两种方式,以及子进程与子线程pid的区别

發(fā)布時(shí)間:2023/12/15 综合教程 35 生活家
生活随笔 收集整理的這篇文章主要介紹了 python之-线程原理-开启线程两种方式,以及子进程与子线程pid的区别 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.什么是線程

進(jìn)程其實(shí)不是個(gè)執(zhí)行單位,進(jìn)程是一個(gè)資源單位,每個(gè)進(jìn)程內(nèi)自帶一個(gè)線程,線程才是cpu上的執(zhí)行單位

如果把操作系統(tǒng)比喻成為一座工程

在工廠內(nèi)每造出一個(gè)車間---》啟動(dòng)一個(gè)進(jìn)程

每個(gè)車間內(nèi)至少有一條流水線---》每個(gè)進(jìn)程內(nèi)至少有一個(gè)線程

簡(jiǎn)單理解比喻:

線程:?jiǎn)沃复a執(zhí)行的過(guò)程(代碼的執(zhí)行)

進(jìn)程:資源的申請(qǐng)與銷毀的過(guò)程(申請(qǐng)內(nèi)存空間,回收內(nèi)存空間,pid號(hào)等)進(jìn)程包含了線程

2.進(jìn)程與線程的區(qū)別

1.線程:?jiǎn)蝹€(gè)線程里的內(nèi)存空間數(shù)據(jù)共享

2.進(jìn)程:物理內(nèi)存空間隔離(多個(gè)進(jìn)程內(nèi)存空間彼此隔離)

同一個(gè)進(jìn)程下的多個(gè)線程共享該進(jìn)程內(nèi)的數(shù)據(jù)

3.創(chuàng)建數(shù)據(jù)

造出線程的數(shù)據(jù)要快于進(jìn)程:進(jìn)程是告訴操作系統(tǒng)開(kāi)辟內(nèi)存空間

線程是告訴操作系統(tǒng)執(zhí)行一條任務(wù)代碼(線程的創(chuàng)建速度是進(jìn)程的100倍)

兩種開(kāi)啟線程的方法:
from threading import Thread, current_thread
import time

# 方式1                                                 函數(shù)開(kāi)啟方式
def task(name):
    print('%s is runing '%name)
    time.sleep(2)
    print('%s is done'%name)

t=Thread(target=task,args=('子線程',))
t.start()

# 方式2 類開(kāi)啟方式class Task(Thread): def run(self): print('%s is runing ' % self.name) time.sleep(2) print('%s is done' % self.name)t = Task()t.start()print('zhu')

3.進(jìn)程開(kāi)啟子進(jìn)程是開(kāi)辟新的內(nèi)存空間,而線程開(kāi)啟子線程是共用一個(gè)內(nèi)存空間,

即:進(jìn)程開(kāi)啟子進(jìn)程的pid號(hào)不一樣,

線程開(kāi)啟子線程的pid號(hào)一樣

from threading import Thread
from multiprocessing import Process
import os

def work():
    print('hello',os.getpid())

if __name__ == '__main__':
    #part1:在主進(jìn)程下開(kāi)啟多個(gè)線程,每個(gè)線程都跟主進(jìn)程的pid一樣
    t1=Thread(target=work)
    t2=Thread(target=work)
    t1.start()
    t2.start()
    print('主線程/主進(jìn)程pid',os.getpid())

    #part2:開(kāi)多個(gè)進(jìn)程,每個(gè)進(jìn)程都有不同的pid
    p1=Process(target=work)
    p2=Process(target=work)
    p1.start()
    p2.start()
    print('主線程/主進(jìn)程pid',os.getpid())

總結(jié)

以上是生活随笔為你收集整理的python之-线程原理-开启线程两种方式,以及子进程与子线程pid的区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。