Python协程之测试读写网页时自动切换,实现并发效果,并对比多线程执行。

原创 2018年04月17日 18:09:55
import time
from gevent import monkey;monkey.patch_all()
import gevent
from  urllib.request import urlopen
import threading

'''
是么是IO操作:
文件读写就是最常见的IO操作,这里的打开url其实就是一个:读url地址里的网页html文件,就是一个抽象的文件读写。
'''
def f(url):
    print('GET: %s' % url)
    resp = urlopen(url)
    data = resp.read()
    print('%d bytes received from %s.' % (len(data), url))

start_time01 = time.time()
# 我们这里使用的协程,gevent就会做到,遇到io操作,自动切换任务,就会节省很多时间
# 实现了在一个线程里面开启并发的效果
gevent.joinall([
    gevent.spawn(f, 'https://www.python.org/'), #这个就是启动一个协程
    gevent.spawn(f, 'https://www.yahoo.com/'),
    gevent.spawn(f, 'https://github.com/'),
])
# gevent.joinall 类似进程池,用来启动多个协程
print('耗费时间为(s):',round(time.time()-start_time01))

# 比较普通用法消耗的时间 异步协程的方法几乎是同步的四分之一
start_time02 = time.time()
def func():
    url_list = ['https://www.python.org/', 'https://www.yahoo.com/','https://github.com/']
    for url in url_list:
        print('GET: %s' % url)
        resp = urlopen(url)
        data = resp.read()
        print('%d bytes received from %s.' % (len(data), url))

func()
print('耗费时间为(s):',round(time.time()-start_time02))

# 下面是开启多线程的模式
start_time03 = time.time()
def read(url):
    print('GET: %s' % url)
    resp = urlopen(url)
    data = resp.read()
    print('%d bytes received from %s.' % (len(data), url))
def func():
    url_list = ['https://www.python.org/', 'https://www.yahoo.com/','https://github.com/']
    t_list = []
    for url in url_list:
        t = threading.Thread(target=read,args=(url,))
        t.start()
        t_list.append(t)
    for j in t_list:
        j.join()
func()
print('耗费时间为(s):',round(time.time()-start_time03))
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/haeasringnar/article/details/79978630

python 多线程并发

python 多线程并发
  • xm_csdn
  • xm_csdn
  • 2016-09-08 10:40:47
  • 1407

【多线程高并发】线程之间通信

github地址:https://github.com/zhaikaishun/concurrent_programming 示例都在Multi_002项目下 关键字:线程之间通信,volatil...
  • T1DMzks
  • T1DMzks
  • 2017-10-26 22:41:53
  • 337

JUnit4多线程执行测试用例

前言: 在testerhome社区中,有人评论说直接使用TestNG,就可以实现多线程,是的,但是方式不一样;我们是按照自己的需求对JUnit4自定义多线程Runner,直接在某个类加上相应的注解即...
  • neven7
  • neven7
  • 2015-05-07 09:36:09
  • 12258

python--selenium多线程执行用例实例/执行多个用例

python--selenium中unittest框架多线程执行用例方法,多个用例执行方法,实现多个用例同时执行并生成测试报告...
  • niedongri
  • niedongri
  • 2017-05-02 11:18:52
  • 3220

python 多进程并发与多线程并发总结

本文对python支持的几种并发方式——多进程并发与多线程并发进行简单的总结。...
  • cskchenshengkun
  • cskchenshengkun
  • 2015-05-16 19:33:18
  • 24621

TestNG测试的并发执行详解

TestNG在执行测试时,默认非并发执行。但是TestNG提供了多种方式,以支持测试的并发支持。 1. 针对多个测试规划的情况,为每个testng*.xml配置文件使用独立的线程执行 java o...
  • taiyangdao
  • taiyangdao
  • 2016-08-09 05:41:33
  • 4592

使用junit进行多线程并发测试

没使用过junit的,请看上篇博客。 这篇讲一下如何使用junit进行多线程并发测试 ~ 实际上junit是不支持多线程的,你可以试试,在test方法里面new个 Thread ~ 会报错 ~...
  • u011250851
  • u011250851
  • 2017-08-24 15:06:38
  • 1542

Python笔记——多线程实现的两种方式及让多条命令并发执行

转自:https://my.oschina.net/cloudcoder/blog/226111 一 概念介绍         Thread 是threading模块中最重要的类之一,可以使用它来创...
  • xqf1528399071
  • xqf1528399071
  • 2016-09-30 20:07:11
  • 7293

python多线程SSH登录并发脚本

测试系统中有一项记录ssh登录日志,需要对此进行并发压力测试。 于是用多线程进行python并发记录 因为需要安装的一些依赖和模块比较麻烦,脚本完成后再用pyinstaller打成exe包分发给其他测...
  • qq1124794084
  • qq1124794084
  • 2017-12-01 16:24:41
  • 555

selenium-server实现在不同PC上执行多线程并发测试

下载Selenium server的jar包 http://selenium-release.storage.googleapis.com/index.html 将jar包保存在主机和需要进行并发...
  • wuxuehong0306
  • wuxuehong0306
  • 2015-12-09 13:45:09
  • 2272
收藏助手
不良信息举报
您举报文章:Python协程之测试读写网页时自动切换,实现并发效果,并对比多线程执行。
举报原因:
原因补充:

(最多只允许输入30个字)