python 程序 執行緒 協程的區別

2021-09-27 03:18:07 字數 1069 閱讀 7211

一、程序(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 程序,執行緒, 協程

程序是系統進行資源分配和排程的乙個獨立單位 最小單位 程序的幾個狀態 空 新建 建立執行乙個程式的新程序,可能的事件有 新的批處理作業 互動登入 終端使用者登入到系統 作業系統因為提供一項服務而建立 由現有的程序派生等。新建 就緒 作業系統準備好再接納乙個程序時,把乙個程序從新建態轉換為就緒態。就緒...