# coding:utf-8 # author = "yintao" from multiprocessing.dummy import Pool as ThreadPool from multiprocessing.pool import Pool as ProcessPool from timeit import timeit from time import sleep import requests from gevent import monkey;monkey.patch_socket() from gevent.pool import Pool as G_Pool urls = ['http://www.ctrip.com/?allianceid=4897&sid=155947&ouid=000401app-&utm_medium=&utm_campaign=&utm' '_source=&isctrip=']*100 def req(url): result = requests.get(url=url) return result.status_code def single(): result = map(req, urls) return list(result) def thread(): pool = ThreadPool(32) pool.map_async(req, urls) pool.close() pool.join() def process(): pool = ProcessPool(8) pool.map_async(req, urls) pool.close() pool.join() def asy(): pool = G_Pool(32) result = pool.map(req, urls) return result if __name__ == "__main__": single_time = timeit(stmt=single, number=1) print("单线程花费的时间%s" % single_time) sleep(3) thread_time = timeit(stmt=thread, number=1) print("32个线程花费的时间%s" % thread_time) sleep(3) process_time = timeit(stmt=process, number=1) print("8个进程花费的时间%s" % process_time) sleep(3) asy_time = timeit(stmt=asy, number=1) print("32个gevent协程花费的时间%s" % asy_time) """ 单线程花费的时间12.048540648081739 32个线程花费的时间1.52604573578901 8个进程花费的时间2.7370715579817997 32个gevent协程花费的时间1.2357046407854924 """
python线程进程协程的对比
最新推荐文章于 2024-04-30 11:41:18 发布