Python gevent和线程性能比较?
我编写了一个测试用例来比较线程和gevent的性能,Python gevent和线程性能比较?,python,multithreading,gevent,Python,Multithreading,Gevent,我编写了一个测试用例来比较线程和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)
使用多线程执行以下任务:
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 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
在许多博客文章中,我看到协同程序比multilthread更有效,在这种情况下,如何解释它?这是因为您没有加入
您的线程
——这意味着程序不会等待线程完成执行,而是几乎立即结束