- 行程是資源(CPU、記憶體等)分配的基本單位,它是程式執行時的一個實體,
- 執行緒是程式執行時的最小單位,它是行程的一個執行流,
- 行程有自己的獨立地址空間,每啟動一個行程,系統就會為它分配地址空間,建立資料表來維護代碼段、堆疊段和資料段,這種操作非常昂貴
- 執行緒是共享行程中的資料的,使用相同的地址空間,因此CPU切換一個執行緒的花費遠比行程要小很多,同時創建一個執行緒的開銷也比行程要小很多
- 行程實作
from multiprocessing import Pool
import time
import random
import os
def work(msg):
start = time.time()
print("work{}開始執行,id為{}".format(msg, os.getpid()))
time.sleep(random.random()*2)
stop = time.time()
print("work{}耗時{}.".format(msg, stop-start))
p = Pool()
for i in range(10):
# 非堵塞運行
p.apply_async(work, args=(i,))
# 堵塞進行
# p.apply(work, args=(i,))
print("開始")
p.close()
p.join()
print("結束")
- 執行緒實作
import threading
import os
from time import sleep
def sorry(i):
print('say sorry {}'.format(i))
sleep(1)
if __name__ == '__main__':
for i in range(1,10):
t = threading.Thread(target=sorry, args=(i,))
t.start()
本文首發于python黑洞網,博客園同步更新
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/167457.html
標籤:Python
上一篇:turtle的簡單繪圖
下一篇:網路編程(2)
