一、程序(process)
多程序模式最大的優點就是穩定性高,因為乙個子程序崩潰了,不會影響主程序和其他子程序。(當然主程序掛了所有程序就全掛了,但是主程序只負責分配任務,掛掉的概率低)apache最早就是採用多程序模式。
多程序模式的缺點是建立程序的代價大,在unix/linux系統下,用fork呼叫還行,在windows下建立程序開銷巨大。另外,作業系統能同時執行的程序數也是有限的,在記憶體和cpu的限制下,如果有幾千個程序同時執行,作業系統連排程都會成問題。
二、執行緒(threading)
#coding=utf-8
import threading
from time import ctime,sleep
import time
def func1(arg):
time.sleep(1)
print("hi %s. %s" %(arg,ctime()))
def func2(arg):
time.sleep(5)
print("hello %s! %s" %(arg,ctime()))
threads =
t1 = threading.thread(target=func1,args=(u'c語言',))
t2 = threading.thread(target=func2,args=(u'python',))
if __name__ == '__main__':
for t in threads:
#t.setdaemon(true)
t.start()
# 等待所有執行緒完成
for t in threads:
t.join()
print("all over %s" %ctime())
結果:
三、協程(gevent)
參考乙個gevent併發程式設計協程的例子
四、拓展:
多工的實現方式:
程序執行緒協程的區別
程序池 乙個程序占用乙個cpu,占用一定的記憶體空間。一般cpu配置都是4核,如果開的程序太多,其他的程式就得等著。什麼情況家使用多程序?cpu是用來計算的。所以在cpu密集運算的情況下,才使用多程序。具體要開幾個程序,根據機器的實際配置和實際生產情況而定。執行緒池 程序裡面才有執行緒,乙個程序裡面...
Python 程序 執行緒 協程
程序和執行緒之間的關係 執行緒是屬於程序的,執行緒執行在程序空間內,同一程序所產生的執行緒共享同一記憶體空間,當程序退出時該程序所產生的執行緒都會被強制退出並清除。執行緒可與屬於同一程序的其它執行緒共享程序所擁有的全部資源,但是其本身基本上不擁有系統資源,只擁有一點在執行中必不可少的資訊 如程式計數...
Python 程序,執行緒, 協程
程序是系統進行資源分配和排程的乙個獨立單位 最小單位 程序的幾個狀態 空 新建 建立執行乙個程式的新程序,可能的事件有 新的批處理作業 互動登入 終端使用者登入到系統 作業系統因為提供一項服務而建立 由現有的程序派生等。新建 就緒 作業系統準備好再接納乙個程序時,把乙個程序從新建態轉換為就緒態。就緒...