多线程小例子

multiprocessing 方式


  1. #!/usr/bin/env python
  2. # Version = 3.5.2
  3. # __auth__ = ‘无名小妖‘
  4. from multiprocessing.dummy import Pool as ThreadPool
  5. import time
  6. import urllib.request
  7. urls = [‘https://www.python.org/‘,
  8. ‘https://www.yahoo.com/‘,
  9. ‘https://github.com/‘ ]
  10. start = time.time()
  11. def open_url(url):
  12. print(‘GET {}‘.format(url))
  13. response = urllib.request.urlopen(url)
  14. results = response.read()
  15. print(‘{} bytes received.‘.format(len(results)))
  16. for url in urls:
  17. open_url(url)
  18. print(‘Normal:‘, time.time() - start)
  19. start2 = time.time()
  20. # 开8个 worker,没有参数时默认是 cpu 的核心数
  21. pool = ThreadPool(processes=8)
  22. # 在线程中执行 urllib2.urlopen(url) 并返回执行结果
  23. pool.map(open_url,urls)
  24. print(‘Thread Pool:‘, time.time() - start2)
  25. pool.close()
  26. pool.join()

gevent 方式


  1. #!/usr/bin/env python
  2. # Version = 3.5.2
  3. # __auth__ = ‘无名小妖‘
  4. from urllib import request
  5. import gevent, time
  6. from gevent import monkey
  7. monkey.patch_all() # 把当前程序的所有的io操作给我单独的做上标记
  8. def f(url):
  9. print(‘GET: %s‘ % url)
  10. resp = request.urlopen(url)
  11. data = resp.read()
  12. print(‘%d bytes received from %s.‘ % (len(data), url))
  13. urls = [‘https://www.python.org/‘,
  14. ‘https://www.yahoo.com/‘,
  15. ‘https://github.com/‘]
  16. time_start = time.time()
  17. for url in urls:
  18. f(url)
  19. print("同步cost", time.time() - time_start)
  20. async_time_start = time.time()
  21. gevent.joinall([
  22. gevent.spawn(f, ‘https://www.python.org/‘),
  23. gevent.spawn(f, ‘https://www.yahoo.com/‘),
  24. gevent.spawn(f, ‘https://github.com/‘),
  25. ])
  26. print("异步cost", time.time() - async_time_start)

null

时间: 2024-08-29 21:25:32

多线程小例子的相关文章

多线程 小例子

1. 线程小例子  /** * 失去一日甚易,欲得回已无途! * 2016-11-17下午1:43:51 * * 进程:可以包含一个或者多个线程! cpu上 真正 执行的 是 线程! * * 实现多线程的方法: * 01.继承Thread类 重写run() * 02.实现Runnable接口 重写run() * * 多线程:在单个程序中,同时运行多个线程来完成不同的工作! 多个线程 并发 执行的技术! * * 并发:在同一个时间段中 有几个程序 都处于 启动运行 到 运行完毕 之间! * 计算机

c# BackGroundWorker 多线程操作的小例子

在我们的程序中,经常会有一些耗时较长的运算,为了保证用户体验,不引起界面不响应,我们一般会采用多线程操作,让耗时操作在后台完成,完成后再进行处理或给出提示,在运行中,也会时时去刷新界面上的进度条等显示元,必要进,还要控制后台线程中断当前操作. 以前,类似的应用会比较麻烦,需要写的代码较多,也很容易出现异常.在 .net中,提供了一个组件 backgroundworker就是专门解决这个问题的. 使用这个组件其实非常简单,例如,我们做一个类似如下界面的进度条的小例子,在后台线程中进行耗时运算,同时

多线程通信小例子——New生产者消费者

多线程通信小例子--New生产者消费者

laravel 数据库操作小例子

public function demo() { $res = null; //insert数据插入 //$user=array('username'=>'joy','password'=>'123456','age'=>23); //$res = DB::table('users')->insert($user); /* 数据查询 $res = DB::table('users')->where('username','joy')->get(); $res = DB:

spring小例子-springMVC+mybits整合的小例子

这段时间没更博,找房去了...   吐槽一下,自如太坑了...承诺的三年不涨房租,结果今年一看北京房租都在涨也跟着涨了... 而且自如太贵了,租不起了.. 突然有点理解女生找对象要房了..   搬家太受罪了... 今天更一下springMVC整合mybits形成最简单的网站demo. 大概效果就是这样的:左边是数据库查询结果,右边是页面访问结果: 首先,一个简单的springMVC小例子可以看这个http://www.cnblogs.com/xuejupo/p/5236448.html 这是在这

cmake 之一个小例子

cmake,比手写makefile更好的选择 安装cmake,此部分略过 一.新建一个工程 这里我是在windows下使用eclipse新建了一个c工程(PS:我一般新建一个Makefile类型的工程,这样比较干净) 二.建立必要的文件夹 我的工程目录: D:\code\cpp\cmakestudy\test>tree /f 卷 软件 的文件夹 PATH 列表 卷序列号为 0006-17B7 D:. │ .cproject │ .project │ CMakeLists.txt │ ├─bin

简述人脸特异性识别&&一个基于LBP和SVM的人脸识别小例子

原谅我用图片,MAC在Safari里给文章进行图文排版太麻烦啦~ 本文适合初入计算机视觉和模式识别方向的同学们观看~ 文章写得匆忙,加上博主所知甚少,有不妥和勘误请指出并多多包涵. 本文Demo的代码由HZK编写,特征点由月神和YK选择和训练. 转载请注明 copyleft by sciencefans, 2014 为了方便大家学习,附上高维LBP的核心代码 1 ################################################### 2 # 3 # 4 # NO

COM2 --- 小例子

在COM1 的小例子中,,我们大概知道什么是组件类 ,什么是接口了.这小节呢,我们来实现一下由一个组件类去实现两个接口的过程. 新建项目: 我们的 解决方案的 名字是 ComDemoCode ,项目名字是 MathToolKit  这表示 我们的 项目 自动 生成的 DLL  的名字就是 MathToolKit(数学工具包). 我们的继承关系 有必要 给大家 先 列出来,让大家 看看 在这里面,IPrimerMath接口 提供 + - * / % 五个基本运算方法,IAdvanceMath接口提

python try小例子

#!/usr/bin/python import telnetlib import socket try: tn=telnetlib.Telnet('10.67.21.29',60000) except socket.error, e: print e exit(1) tn.set_debuglevel(1) tn.write('quit'+'\n') print 'ok' socket.error为错误类型 e为对象 python try小例子,布布扣,bubuko.com