程序 執行緒和攜程的通俗解釋 劉新宇Python

2022-06-28 21:33:13 字數 1721 閱讀 8756

通過下面這張圖你就能看清楚了,程序、執行緒和攜程的關係

程序:

多個程序是可以執行在多個cpu當中的,比如你的電腦是4核,可以同時並行執行四個程序,這是真正物理上的並行執行。

執行緒:

每個程序又可以有多個執行緒,執行緒是輪詢執行的,因為輪詢的速度很快,所以可以看成是並行。

微執行緒:

攜程是微執行緒,乙個執行緒可以分為多個攜程,同樣也是輪詢執行,這樣的好處是減少cpu的資源消耗,一些比較多而且小的事件可以用攜程去處理,減少資源的開銷。

協程原理

生成器器

def fun1():

print(100)

print(200)

yield # 暫停** 儲存斷點狀態

print(100)

print(100)

yield

eventlet

print(100)

print(100)

def fun2():

print(100)

print(200)

yield

print(100)

print(100)

yield

print(100)

print(100)

gen_obj1 = fun1() # 建立了生成器器物件

gen_obj2 = fun2()

next(gen_obj1)

next(gen_obj2)

next(gen_obj1)

next(gen_obj2)

通常採用協程庫(擴充套件庫)來完成協程開發

協程庫能夠自動幫助完成協程的執行切換

eventlet

from multiprocessing import process

p = processs()

p.start()

from threading import thread

t = thread()

t.start()

from eventlet import eventlet

e1 = eventlet()

e1.start()

e2 = eventlet()

e2.start()

協程運行socketio伺服器器的⽅方式

pip install eventlet

import eventlet

eventlet.monkey_patch()

import socketio

import eventlet.wsgi

# server物件理理解為flask⾥裡里⾯面的應⽤用物件就可以

# sio物件是⽤用來管理理socketio即時通訊業務的

sio = socketio.server(async_mode='eventlet') #

指明在evenlet模式下

eventlet.wsgi.server(eventlet.listen(('',

通俗的解釋程序和執行緒

程序 process 和執行緒 thread 是作業系統的基本概念,但是它們比較抽象,不容易掌握。最近,我讀到一篇材料,發現有乙個很好的模擬,可以把它們解釋地清晰易懂。1.計算機的核心是cpu,它承擔了所有的計算任務。它就像一座工廠,時刻在執行。2.假定工廠的電力有限,一次只能供給乙個車間使用。也就...

執行緒和程序的通俗解釋

程序 process 和執行緒 thread 是作業系統的基本概念,但是它們比較抽象,不容易掌握。下面篇材料,有乙個很好的模擬,可以把它們解釋地清晰易懂。1 計算機的核心是cpu,它承擔了所有的計算任務。它就像一座工廠,時刻在執行。2 假定工廠的電力有限,一次只能供給乙個車間使用。也就是說,乙個車間...

通俗易懂的程序與執行緒解釋

程序 process 和執行緒 thread 是作業系統的基本概念,但是它們比較抽象,不容易掌握。最近,我讀到一篇材料,發現有乙個很好的模擬,可以把它們解釋地清晰易懂。1.計算機的核心是cpu,它承擔了所有的計算任務。它就像一座工廠,時刻在執行。2.假定工廠的電力有限,一次只能供給乙個車間使用。也就...