多程序和多執行緒的區別
多執行緒使用的是cpu的乙個核,適合io密集型
多程序使用的是cpu的多個核,適合運算密集型
元件python提供非常好的多程序包如:multiprocessing
multiprocessing支援紫禁城,通訊,共享資料,執行不同形式的同步,提供是processpipe,lock等元件
multiprocessing 常用的方法
# multiprocessing.active_children() 列出存在的子程序# cpu_count() 統計cpu個數
例:import multiprocessing
p = multiprocessing.cpu_count()
m = multiprocessing.active_children()
print p
print m
執行結果:
4
process
1、建立乙個process物件
p = multiprocessing.process(target=worker, args=(5,))
注:target=函式名字
args= 函式需要的引數,以tuple的形式傳入
2、process常用方法
is_alive() 判斷程序是否存在
run() 啟動程序
start() 啟動程序,會自動呼叫run方法
join(timeout) 等待程序結束或超時
3、process常用屬性
name 程序名字
pid 程序的pid
例子:
import multiprocessingimport time
def worker(interval):
time.sleep(interval)
print "hell world!!!"
if __name__ == "__main__":
p = multiprocessing.process(target=worker, args=(5,))
p.start()
print p.pid
print p.is_alive()
p.join()
# p.join(timeout=3) #等待紫禁城執行完畢或者超時退出
print "end main"
print p.name
print p.pid
執行結果:
17348true
hell world!!!
end main
process-1
17348
多程序例項:
import timefrom datetime import datetime
import multiprocessing
now = datetime.strftime(datetime.now(),"%y-%m-%d %h:%m:%s")
def worker(name,interval):
start = datetime.strftime(datetime.now(), "%y-%m-%d %h:%m:%s")
print " start ".format(name,start)
time.sleep(interval)
end = datetime.strftime(datetime.now(), "%y-%m-%d %h:%m:%s")
print " end ".format(name,end)
if __name__ == "__main__":
print "main start"
print "this computer has cpu".format(multiprocessing.cpu_count())
p1 = multiprocessing.process(target=worker,args=("worker1",2))
p2 = multiprocessing.process(target=worker,args=("worker2",3))
p3 = multiprocessing.process(target=worker,args=("worker3",4))
p1.start()
p2.start()
p3.start()
print multiprocessing.cpu_count()
for p in multiprocessing.active_children():
print "this pid of is ".format(p.name,p.pid)
print "main end"
執行結果:
main startthis computer has 4 cpu
4this pid of process-1 is 19872
this pid of process-3 is 19008
this pid of process-2 is 18844
main end
worker1 start 2017-12-08 23:40:12
worker2 start 2017-12-08 23:40:12
worker3 start 2017-12-08 23:40:12
worker1 end 2017-12-08 23:40:14
worker2 end 2017-12-08 23:40:15
worker3 end 2017-12-08 23:40:16
多程序 多程序queue
多程序 import multiprocessing import threading import time defthread run print threading.get ident defrun name time.sleep 2 print hello name t threading....
python多程序 python多程序
當有多個非相關任務需要處理時,並行能大大提高處理速度。這裡簡要介紹python的multiprocessing模組。簡單多程序編寫 當我們任務數量確定而且比較少的時候,可以手動為每個任務指定乙個程序來執行。import multiprocessing as mp def f a print a if...
PHP多程序 4 內部多程序
說的都是只相容unix 伺服器的多程序,下面來講講在window 和 unix 都相容的多程序 這裡是泛指,下面的curl實際上是通過io復用實現的 通過擴充套件實現多執行緒的典型例子是curl,curl 支援多執行緒的抓取網頁的功能。這部分過於抽象,所以,我先給出乙個curl並行抓取多個網頁內容的...