学习多进程,当运行代码:

from concurrent.futures import ProcessPoolExecutor
import requests
import osdef get_page(url):print('<%s> is getting [%s]' % (os.getpid(), url))response = requests.get(url)if response.status_code == 200:  # 200代表状态:下载成功了return {'url': url, 'text': response.text}def parse_page(res):res = res.result()print('<%s> is getting [%s]' % (os.getpid(), res['url']))with open('db.txt', 'a') as f:parse_res = 'url:%s size:%s\n' % (res['url'], len(res['text']))f.write(parse_res)if __name__ == '__main__':p = ProcessPoolExecutor()l = ['http://www.baidu.com','http://www.baidu.com','http://www.baidu.com','http://www.baidu.com',]for url in l:p.submit(get_page, url).add_done_callback(parse_page)# 这里的回调函数拿到的是一个对象。# 得先把返回的res得到一个结果。即在前面加上一个res.result() #谁好了谁去掉回调函数# 回调函数也是一种编程思想。不仅开线程池用,开线程池也用p.shutdown()  # 相当于进程池里的close和joinprint('主', os.getpid())

出现

Exception in thread QueueManagerThread:
Traceback (most recent call last):
...
ValueError: need at most 63 handles, got a sequence of length 65

后来在p = ProcessPoolExecutor()括号内添加参 max_workers=3,就不报错了。
多线程的话,不需要在ThreadPoolExecutor()括号内添加max_workers参数。

from concurrent.futures import ThreadPoolExecutor
import requests
import osdef get_page(url):print('<%s> is getting [%s]' % (os.getpid(), url))response = requests.get(url)if response.status_code == 200:  # 200代表状态:下载成功了return {'url': url, 'text': response.text}def parse_page(res):res = res.result()print('<%s> is getting [%s]' % (os.getpid(), res['url']))with open('db.txt', 'a') as f:parse_res = 'url:%s size:%s\n' % (res['url'], len(res['text']))f.write(parse_res)if __name__ == '__main__':p = ThreadPoolExecutor()l = ['http://www.baidu.com','http://www.baidu.com','http://www.baidu.com','http://www.baidu.com',]for url in l:p.submit(get_page, url).add_done_callback(parse_page)# 这里的回调函数拿到的是一个对象。# 得先把返回的res得到一个结果。即在前面加上一个res.result() #谁好了谁去掉回调函数# 回调函数也是一种编程思想。不仅开线程池用,开线程池也用p.shutdown()  # 相当于进程池里的close和joinprint('主', os.getpid())

https://www.cnblogs.com/dylan-wu/p/7163823.html

ProcessPoolExecutor相关推荐

  1. 在使用 python 封装的进程池 from concurrent.futures import ProcessPoolExecutor 遇到的问题

    在ubuntu中,用的是python3.5 executeprebuildpath = ExecutePrebuild()processpool = ProcessPoolExecutor(1)pro ...

  2. python 底层原理processpoolexecutor_python 多进程并行编程 ProcessPoolExecutor的实现

    使用 ProcessPoolExecutor from concurrent.futures import ProcessPoolExecutor, as_completed import rando ...

  3. 进程池和线程池 concurrent.futures import ProcessPoolExecutor,ThreadPoolExecutor

    import time#线程池可以用shutdown submit from threading import current_thread from concurrent.futures impor ...

  4. 【Python随笔】python进程池ProcessPoolExecutor的用法与实现分析

    在python开发期间,由于GIL的原因,不能直接采用并行的方式处理代码逻辑.在multiprocessing库的支持下,python程序能够启动子进程执行特定的任务,但子进程的管理也成为了问题.为了 ...

  5. 多进程concurrent.futures的ProcessPoolExecutor的一个注意点

    多进程concurrent.futures的ProcessPoolExecutor需要在"if name == main"下运行,否则会报错.示例如下: from concurre ...

  6. python基础-进程池、submit同异步调用、shutdown参数、ProcessPoolExecutor进程池、进程池ftp

    引入进程池 使用ProcessPoolExecutor进程池 使用shutdown 使用submit同步调用 使用submit异步调用 进程池实现ftp 引入进程池 在学习线程池之前,我们先看一个例子 ...

  7. Python 多进程笔记 — 启动进程的方式、守护进程、进程间通信、进程池、进程池之间通信、多进程生产消费模型

    1 面向过程启动多进程 Python 操作进程的类都定义在 multiprocessing 模块,该模块提供了一个 Process 类来代表一个进程对象,这个对象可以理解为是一个独立的进程,可以执行另 ...

  8. python究竟要不要使用多线程

    阅读目录 1. 先来看两个例子 2. python虚拟机机制如何控制代码执行? 3. python多线程究竟有没有用? 4. python多进程执行原理 在总结concurrent.futures库之 ...

  9. Appium 并发测试基于unitest

    前言: 在回归测试阶段,UI测试,兼容测试是测试的必要步骤.UI自动化的本身是比较冗余的测试,但是换个角度思考,UI自动化同时连接多台设备,那么在回归测试时,在同一个脚本下产生的测试结果是非常有价值的 ...

  10. 搞事情 -- python之线程

    简介 操作系统线程理论 线程概念的引入背景 线程的特点 进程和线程的关系 使用线程的实际场景 用户级线程和内核级线程(了解) 线程和python 理论知识 线程的创建Threading.Thread类 ...

最新文章

  1. mysql需要备份的数据_Mysql根据需要备份数据
  2. iMeta期刊纸质版开始免费订阅(包邮)——第一期创刊收藏版
  3. 龙族幻想最新东京机器人位置_龙族幻想:东京·白月境活动介绍
  4. SVM中为何间隔边界的值为正负1
  5. bzoj2467生成树
  6. 动词变名词的变化规则_动词过去式变化规则 - 点评英语网
  7. 什么是spring(转载)
  8. 网页中文乱码--UTF-8和GB2312互转
  9. CREO - 基础2 - 如何让装配好的零件重新装配
  10. 26_多线程_第26天(Thread、线程创建、线程池)
  11. 什么样的流_量最容易变现?
  12. go语言打印errors类型变量
  13. Android中当item数量超过一定大小RecyclerView高度固定
  14. vue2.0实现银行卡类型种类的选择
  15. 华北水利水电大学历年c语言试题,一百题C语言试题
  16. 微信商城制作的步骤是什么?微信商城模板大全
  17. Native开发工具之静态库和动态库(二,小码农也有大梦想
  18. 第三方支付宝API应用流程
  19. 你的人生,就是从这一刻开始毁掉的
  20. the oracle of bacon,python爬虫之遍历单个域名

热门文章

  1. vue 双向数据绑定
  2. P3435 [POI2006]OKR-Periods of Words
  3. 删除none的images
  4. pytest学习(2)
  5. 【codecombat】 试玩全攻略 第十六关 近战
  6. POJ 3049 DFS
  7. JAVA:事件监听器之练习
  8. Debian 下配置ssh
  9. maven学习记录一——maven介绍及入门
  10. jasmine+seajs+angular+karma 单元测试开发