【问题标题】:gevent and thread performance compare?gevent和线程性能比较?
【发布时间】:2014-04-14 08:52:44
【问题描述】:

我写了一个测试用例来比较线程和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))

打印:

multi thread task executed in 0.002425 second

然而,使用 gevent 替换线程做同样的任务:

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

在很多博文中我看到协程比多线程更有效,在这种情况下,如何解释呢?

【问题讨论】:

    标签: python multithreading gevent


    【解决方案1】:

    那是因为你没有join 你的Thread - 这意味着程序不会等待线程完成执行,而是几乎立即结束。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-07
      • 1970-01-01
      • 2014-08-30
      • 2017-10-25
      • 2017-05-12
      • 1970-01-01
      相关资源
      最近更新 更多