python之單線程、多線程、多進程

1、基本概念
進程(Process) 是計算機中的程序關於某數據集合上的一次運行活動,是系統進行資源分配和調度的基本單位,是操做系統結構的基礎。 在當代面向線程設計的計算機結構中,進程是線程的容器。程序是指令、數據及其組織形式的描述,進程是程序的實體。是計算機中的程序關於某數據集合上的一次運行活動,是系統進行資源分配和調度的基本單位,是操做系統結構的基礎。程序是指令、數據及其組織形式的描述,進程是程序的實體。
線程(thread) 是操做系統可以進行運算調度的最小單位。它被包含在進程之中,是進程中的實際運做單位。一條線程指的是進程中一個單一順序的控制流,一個進程中能夠併發多個線程,每條線程並行執行不一樣的任務。
簡單總結:
進程:指在系統中正在運行的一個應用程序;程序一旦運行就是進程;進程——資源分配的最小單位。
線程:系統分配處理器時間資源的基本單元,或者說進程以內獨立執行的一個單元執行流。線程——程序執行的最小單位。
 
2、 單線程
程序執行時,所走的程序路勁按照聯連續順序排下去,前面的處理完後,後面的纔會執行
舉個栗子
#單線程
 1 from time import sleep,ctime
 2 def talk():
 3 print("stark talk %r" %ctime())
 4 sleep(2)
 5 def write():
 6 print("stark write %r" %ctime())
 7 sleep(3)
 8 talk()
 9 write()
10 print("all and! at %r" %ctime())
查看結果-順序執行

 

 

3、多線程python

 1 from time import sleep,ctime
 2 import threading
 3 
 4 def talk(content,loop):
 5 for i in range(loop):
 6 print("stark talk %s %s" %(content,ctime()))
 7 sleep(3)
 8 
 9 def write(content,loop):
10 for i in range(loop):
11 print("stark write %s %s" %(content,ctime()))
12 sleep(5)
13 #定義和加載說和寫的線程
14 threads=[]
15 t1=threading.Thread(target=talk,args=('hello world',2))
16 threads.append(t1)
17 t2=threading.Thread(target=write,args=('life is short you need python',2))
18 threads.append(t2)
19 #執行多線程
20 for t in threads:
21 t.start()
22 for t in threads:
23 #線程守護
24 t.join()
25 print("all threads end! at %r" %ctime())
查看執行結果-讀寫併發
 
 
4、多進程
 1 from time import sleep,ctime
 2 import multiprocessing
 3 
 4 def talk(content,loop):
 5 for i in range(loop):
 6 print("stark talk %s %s" %(content,ctime()))
 7 sleep(2)
 8  
 9 def write(content,loop):
10 for i in range(loop):
11 print("stark write %s %s" %(content,ctime()))
12 sleep(3)
13 #定義和加載說和寫的進程
14 process=[]
15 p1=multiprocessing.Process(target=talk,args=('hello world',2))
16 process.append(p1)
17 p2=multiprocessing.Process(target=write,args=('life is short you need python',2))
18 process.append(p2)
19 #調用進程
20 if __name__=='__main__':
21 for t in process:
22 t.start()
23 for t in process:
24 #進程守護
25 t.join()
26 print("all process end! at %r" %ctime())
查看執行結果-讀寫併發

 

 

 
相關文章
相關標籤/搜索