程序 協程 執行緒小案例

2021-08-20 22:48:48 字數 1445 閱讀 4270

程序案例

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執行時所需要的一串指令。每個獨立...