测试机器单核
sequence:
(pythonenv)[xluren@test thread_coroutine_demo]$ cat sequence.py
import time
def sync_task(i):
#do something
time.sleep(1)
print i,"done"
def sync_run():
start = time.time()
for i in range(10):
sync_task(i)
end = time.time()
print("sync task executed in %f second"%(end-start))
sync_run()
结果:
sync task executed in 10.011511 second
(pythonenv)[xluren@test thread_coroutine_demo]$
multithread
(pythonenv)[xluren@test thread_coroutine_demo]$ cat multithread.py
import threading
import time
def sync_task(i):
#do something
time.sleep(1)
print i,"done"
def multi_thread_run():
start = time.time()
a=[]
for i in range(1000):
t = threading.Thread(target=sync_task,args=(i,))
a.append(t)
t.start()
for i in a:
i.join()
end = time.time()
print("multi thread task executed in %f second"%(end-start))
multi_thread_run()
(pythonenv)[xluren@test thread_coroutine_demo]$
结果:
999 done
multi thread task executed in 1.407100 second
gevent:
(pythonenv)[xluren@test thread_coroutine_demo]$ cat gevent_demo.py
import gevent
import time
def async_task(i):
#do something
gevent.sleep(1)
print i,"done"
def async_run():
start = time.time()
coroutins = []
for i in range(1000):
coroutins.append(gevent.spawn(async_task,i))
gevent.joinall(coroutins)
end = time.time()
print("async task executed in %f second"%(end-start))
async_run()
(pythonenv)[xluren@test thread_coroutine_demo]$
结果:
998 done
999 done
async task executed in 1.111667 second
(pythonenv)[xluren@test thread_coroutine_demo]$ cat gevent_demo.py
multiprocess
(pythonenv)[xluren@test thread_coroutine_demo]$ cat multiprocess.py
import multiprocessing
import time
def sync_task(i):
#do something
time.sleep(1)
print i,"done"
def multi_thread_run():
start = time.time()
a=[]
for i in range(1000):
t = multiprocessing.Process(target=sync_task,args=(i,))
a.append(t)
t.start()
for i in a:
i.join()
end = time.time()
print("multi process task executed in %f second"%(end-start))
multi_thread_run()
(pythonenv)[xluren@test thread_coroutine_demo]$
结果:
multi process task executed in 12.607443 second
(pythonenv)[xluren@test thread_coroutine_demo]$ cat multiprocess.py
到时再来个多核的测试,gevent 很好用。尤其他的monkey加上之后。