zoukankan      html  css  js  c++  java
  • python 协程性能测试

    记录一下学习过程:

    1.无协程:

    import time,re,cProfile,requests

    from functools import wraps
    def fn_timer(function): @wraps(function) def function_timer(*args,**kwargs): t0=time.time() result=function(*args,**kwargs) t1=time.time() print("Total time running :%s seconds"%(str(t1-t0))) return result return function_timer @fn_timer def test(): url = 'https://www.baidu.com' for i in range(1,101): r = requests.get(url) # print(r.text) cProfile.run('test()')

     运行结果:为5.58秒(我用了2个记时间的方法) 

     2.用了协程:

    import time,re,cProfile,requests

    from gevent import monkey,pool monkey.patch_socket() import gevent from functools import wraps pools = pool.Pool(100) def fn_timer(function): @wraps(function) def function_timer(*args,**kwargs): t0=time.time() result=function(*args,**kwargs) t1=time.time() print("Total time running :%s seconds"%(str(t1-t0))) return result return function_timer @fn_timer def test(): url = 'https://www.baidu.com' def req(u): r = requests.get(u) for i in range(1,101): pools.add(gevent.spawn(req,url)) pools.join() # print(r.text) cProfile.run('test()')

      运行结果:耗时为4.68秒

    用了协程快了1s多。。。。。提速20%左右。。。。

    第一个程序,是单一线程顺序执行100次。

    第二个程序,是通过协程池(里面有100个协程)来执行。

     记录时间的两种方法分别为:(1)我通过装饰器来计时(2)通过cProfile来计时

    我通过这两种方法记时间,误差很小。两种方法都可以用来记录程序运行时间。

  • 相关阅读:
    意法半导体STM32MP157A MPU加持,米尔科技首款ST Linux开发板MYD-YA157C评测
    基于nxp i.mx8m mini的新一代高性价比核心板之王
    Spring IoC容器-ApplicationContext
    XML文档
    Spring资源访问
    Spring框架简介
    SpringBoot整合RabbitMQ
    发布订阅模式
    主题模式
    RabbitMQ Work Queues(工作队列)
  • 原文地址:https://www.cnblogs.com/BigStupid/p/8497166.html
Copyright © 2011-2022 走看看