多程序與多執行緒

2021-09-22 10:11:15 字數 1593 閱讀 1929

import threading
建立乙個執行緒,指向的函式,不接收引數的情況

t = threading.thread(target=函式名)
建立乙個執行緒,指向的函式,收引數的情況

t = threading.thread(target=函式名, args=(實參1,))
執行緒物件名.start()
生命週期

我們的py檔案執行起來的時候,就會有乙個主線程

當子執行緒物件建立後,當子執行緒物件執行時,才會創造出來新的執行緒,叫做子執行緒

子執行緒如果**沒有執行結束,主線程是會等待子執行緒的

直接子執行緒全部執行完畢

主線程才會結束

import multiprocessing
p = multiprocessing.process(target=函式名)
程序物件名.start()
程序物件名.join()

# 當**執行到這裡時,直譯器會判斷程序物件是否已執行完成

# 如果沒有執行完成,**會卡住,直到該程序執行完成,才會執行後面的**

檢視當前程序的id

os.getpid()
通過程序物件查

程序物件.id
檢視當前程序的父程序id

os.getppid()
判斷程序物件p是否存活

p.is_alive
分配資源

執行任務

程序包含執行緒

每開乙個程序出來,都必然會有乙個主線程

程序提供了資源(記憶體空間)

執行緒主要執行任務

多執行緒可以共享全域性變數

多程序不可以共享全域性變數

使用方法與執行緒鎖相同

semaphore是同時允許一定數量的執行緒更改資料

訊號量物件 = multiprocessing.semaphore(鑰匙的數量)

建立佇列物件

佇列物件 = multiprocessing.queue(容量)

用法功能

資料同步,無需接收與傳遞引數,資料變化自動同步

用法

注意

import multiprocessing

import time

def func(n):

print(n)

time.sleep(1)

if __name__ == '__main__':

p = multiprocessing.pool(3)

ret_list =

for i in range(10):

for ret in ret_list:

ret.get()

多執行緒與多程序

程序 程序是程式的一次執行,在傳統的計算機中,程序既是基本的分配單元,也是基本的執行單元。執行緒 執行緒是可執行的實體單元,它是處理機排程的基本單位。由於執行緒在同一位址空間,因此建立和撤銷執行緒的開銷小,執行緒間的通訊效率高,切換迅速。在多處理機系統中,對程序的個數有所限制,但對執行緒的個數不存在...

多執行緒與多程序

魚還是熊掌 多程序多執行緒的選擇 關於多程序和多執行緒,教科書上最經典的一句話是 程序是資源分配的最小單位,執行緒是cpu排程的最小單位 這句話應付考試基本上夠了,但如果在工作中遇到類似的選擇問題,那就沒有這麼簡單了,選的不好,會讓你深受其害。經常在網路上看到有的xdjm問 多程序好還是多執行緒好?...

多執行緒與多程序

程序是資源分配的最小單位,基於cpu而言的,一般乙個cpu執行乙個程序,只不過切換速度太快,相當於同時在執行多個程序。如程式a在讀取大量資料時,cpu可以切換程式b,當a讀完之後,儲存b的執行進度並暫停,繼續執行a 也就是併發執行 乙個程式對應乙個程序組,程序具有建立其他程序的功能,而程式沒有。同一...