gevent和线程性能比较?

2024-10-04 07:24:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我编写了一个测试用例来比较thread和gevent的性能,
使用多线程执行以下任务:

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))

打印:

^{pr2}$

然而,使用gevent replace thread执行相同的任务:

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

在很多博客文章中我看到协同程序比multithread更有效,在这种情况下,如何解释它呢?在


Tags: inimporttaskasynctimedefgeventsync