2014-04-14 3 views
0

내가 스레드와 gevent의 성능을 비교하는 테스트 케이스를 쓰기 등의 작업을 수행하는 멀티 스레드를 사용하여
:gevent와 thread 성능을 비교합니까?

import time 
import threading 

def sync_task(): 
    #do something 
    time.sleep(1) 

def multi_thread_run(): 
    start = time.time() 
    for i in range(10): 
     t = threading.Thread(target=sync_task) 
     t.start() 
    end = time.time() 
    print("multi thread task executed in %f second"%(end-start)) 

인쇄 : 같은 작업을 할 스레드를 대체 gevent 사용하지만

multi thread task executed in 0.002425 second 

:

import gevent 
def async_task(): 
    #do something 
    gevent.sleep(1) 

def async_run(): 
    start = time.time() 
    coroutins = [] 

    for i in range(10): 
     coroutins.append(gevent.spawn(async_task)) 
    gevent.joinall(coroutins) 

    end = time.time() 
    print("async task executed in %f second"%(end-start)) 

인쇄 :

,
async task executed in 1.002012 second 

많은 블로그 게시물에서 나는 coroutine이 mutilthread보다 효과적이라고보고,이 경우 어떻게 설명 할 수 있습니까?

답변

1

joinThread이 아니기 때문에 프로그램이 스레드 실행을 기다리지 않고 거의 즉시 종료됩니다.