併發程式設計 程序基礎

2022-04-25 04:39:14 字數 1538 閱讀 8552

作業系統

阻塞和非阻塞

非阻塞:程序只會在就緒和 執行狀態中切換

程序三狀態:就緒 執行 阻塞

併發並行

子程序和主程序

多併發的tcp服務端

程序是作業系統中最小的資源分配單位

程序process 開啟子程序

join控制子程序

守護程序 daemon

鎖同步控制

訊號量 機制:計數器+鎖實現的 semaphore

事件 event

控制這個屬性的值

程序之間的通訊(ipc)

佇列是基於管道 + 鎖 實現的

管道(pipe)是基於socket,pickle實現的

def consume(q):

print('son-->',q.get())

q.put('abc')

if __name__ == '__main__':

q = queue()

p = process(target=consume,args=(q,))

p.start()

q.put()

p.join()

print('foo-->',q.get())

簡單的生產消費模型

def consume(q):

print('son-->',q.get())

q.put('abc')

if __name__ == '__main__':

q = queue()

p = process(target=consume,args=(q,))

p.start()

q.put()

p.join()

print('foo-->',q.get())

相同的原理 joinablequeue

管道 程序之間資料不安全 且訪問資料複雜

程序池(pool) multiprocessing起程序池

有返回值的情況下

- ```python

import os

import time

from multiprocessing import pool

def task(num):

time.sleep(1)

print("%s: %s"%(num,os.getpid()))

return num **2

if __name__ == '__main__':

p = pool(4)

for i in range(20):

p.close()

p.join()

#輸出結果同時四個認識執行

```- 3.map()方法

- 非同步提交的簡化版本

- 自帶close和join方法

- 直接拿到返回值的可迭代物件

- 迴圈可以拿到返回值

程序池-----**函式

網路程式設計基礎 併發程式設計 多程序

python中的多執行緒無法利用多核優勢,如果想要充分地使用多核cpu的資源 os.cpu count 檢視 在python中大部分情況需要使用多程序。python提供了multiprocessing multiprocessing模組用來開啟子程序,並在子程序中執行我們定製的任務 比如函式 該模組...

python 併發程式設計基礎之 程序

目錄多道技術 基於單核情況下研究 併發與並行 程序程序的三個狀態 同步和非同步 建立程序的兩種方式 乙個計算機機房,一次只能被乙個卡片使用。缺點 cpu利用率最低。支援多使用者去使用乙個計算機機房。高速磁碟 提高檔案的讀取速度。優點 提高cpu的利用率 多個程式使用cpu時是序列。必須讓乙個程式結束...

python併發程式設計 程序,併發

1.程序是乙個正在執行的程式,或者說是程式執行的過程,程序是個抽象概念 程序起源於作業系統,是作業系統最核心的概念,作業系統所有其他的概念都是圍繞程序展開 研究程序最底層就是在研究作業系統底層 2.序列 程序 乙個任務完完整整的執行完畢後,在執行下乙個任務 3.併發 程序 看起來多個任務是同時執行即...