程序案例
import multiprocessing
import time
import os
def getdata(data):
data1,data2=data
print os.getpid(),"start"
#time.sleep(3)
print os.getpid(), "end"
return data1*data1,data2
if __name__=="__main__":
mylist=[(x,x+1) for x in range(100)]
pool=multiprocessing.pool(processes=5) #程序池,最大執行4個
pool_outputs=pool.map(getdata,mylist) #抓取程序池的所有執行結果
pool.close() #關閉程序池
pool.join() #等待程序幹完
print pool_outputs
協程案例
import gevent
import gevent.monkey
import urllib2
gevent.monkey.patch_all()#自動切換
def download(url):
print "start",url
data=urllib2.urlopen(url).read()
print "length",len(data),url
gevent.joinall([
gevent.spawn(download,""),
gevent.spawn(download,""),
gevent.spawn(download,""),
gevent.spawn(download,""),
])
執行緒案例
import threading
import time
def mythread(name):
with sep:
for i in range(10):
time.sleep(1)
print name,str(i),threading.current_thread().name #執行緒名字
sep=threading.semaphore(2)
threadlist=
for name in ["a","b","c","d","e"]:
mythd=threading.thread(target=mythread,args=(name,))
mythd.start()
for thread in threadlist:
thread.join()
程序 執行緒 協程
多程序多執行緒的最終目地都是為了加快任務處理的時間,但是受限於cpu核數 只有多核才能實現並行,任務耗時 單核任務耗時 cpu核數 那麼在單核上執行多程序多執行緒是不是沒有用了,加快不了處理的速度了?答案肯定是不是的,不然這個東西設計出來太雞肋了,那它們加快處理的原理是什麼呢?乙個程序耗時 b程序耗...
程序 執行緒 協程
程序是系統資源分配的最小單位,系統由乙個個程序 程式 組成。一般情況下,包括文字區域 text region 資料區域 data region 和堆疊 stack region 檔案描述符表 程序每次開啟乙個檔案,系統就會在該程序的使用者檔案描述符表中分配乙個相應的表項,表項的索引返回給該程序,用於...
執行緒 程序 協程
執行緒是作業系統中進行運算排程的最小單位。執行緒被包含在程序之中,是程序中的實際運作單位。一條執行緒指的是程序中乙個單一順序的控制流,乙個程序可以併發多個執行緒,每條執行緒並行執行不同的任務。乙個執行緒是乙個execution context 執行上下文 即乙個cpu執行時所需要的一串指令。每個獨立...