2019独角兽企业重金招聘Python工程师标准>>>

concurrent.futures模块提供了一个异步执行callables的高级接口。 可以使用ThreadPoolExecutor和ProcessPoolExecutor。 两者都继承了相同的接口,该接口由抽象的Executor类定义。

一个抽象类,提供异步执行调用的方法。 它不应该直接使用,而是通过其具体的子类。

submit (fn*args**kwargs):提交执行的函数并获取一个Future对象,例如:

with ThreadPoolExecutor(max_workers=1) as executor:future = executor.submit(pow, 323, 1235)print(future.result())

    ThreadPoolExecutor:是Executor子类,它使用一个线程池来异步执行调用。concurrent.futures.ThreadPoolExecutor(max_workers=Nonethread_name_prefix=''initializer=Noneinitargs=())。例如:

import concurrent.futures
import urllib.request
URLS = ['http://www.foxnews.com/','http://www.cnn.com/','http://europe.wsj.com/','http://www.bbc.co.uk/','http://some-made-up-domain.com/']# Retrieve a single page and report the URL and contents
def load_url(url, timeout):with urllib.request.urlopen(url, timeout=timeout) as conn:return conn.read()# We can use a with statement to ensure threads are cleaned up promptly
with concurrent.futures.ThreadPoolExecutor(max_workers=5) as executor:# Start the load operations and mark each future with its URLfuture_to_url = {executor.submit(load_url, url, 60): url for url in URLS}for future in concurrent.futures.as_completed(future_to_url):url = future_to_url[future]try:data = future.result()except Exception as exc:print('%r generated an exception: %s' % (url, exc))else:print('%r page is %d bytes' % (url, len(data)))

ProcessPoolExecutor:concurrent.futures.ProcessPoolExecutor(max_workers=Nonemp_context=Noneinitializer=Noneinitargs=()):使用如下:

import concurrent.futures
import math
executor = ProcessPoolExecutor(max_workers=5)def is_prime(n):if n % 2 == 0:return Falsesqrt_n = int(math.floor(math.sqrt(n)))for i in range(3, sqrt_n + 1, 2):if n % i == 0:return Falsereturn Truedef main():for i in range(10):
        future = executor.submit(is_prime, n)if __name__ == '__main__':main()

Future: Future类封装了可调用的异步执行。 该实例由Executor.submit()创建。

转载于:https://my.oschina.net/u/3316387/blog/2996178

Python并发编程之concurrent.futures相关推荐

  1. Python并发编程之threading模块

    Python并发编程之threading模块 threading 模块 1. Timer对象 2. Lock对象 3. RLock 4. 信号量和有边界的信号量 5. 事件 6. 条件变量 7. 使用 ...

  2. python并发模块之concurrent.futures(一)

    Python3.2开始,标准库为我们提供了concurrent.futures模块,它提供了ThreadPoolExecutor和ProcessPoolExecutor两个类,实现了对threadin ...

  3. python并发编程之semaphore(信号量)_浅谈Python并发编程之进程(守护进程、锁、信号量)...

    前言:本博文是对Python并发编程之进程的知识延伸,主要讲解:守护进程.锁.信号量. 友情链接: 一.守护进程(daemon) 1.1 守护进程概念 首先我们都知道:正常情况下,主进程默认等待子进程 ...

  4. python并发编程之semaphore(信号量)_Python 并发编程系列之多线程

    Python 并发编程系列之多线程 2 创建线程 2.1 函数的方式创建线程 2.2 类的方式创建线程 3 Thread 类的常用属性和方法 3.1 守护线程: Deamon 3.2 join()方法 ...

  5. python并发编程之semaphore(信号量)_python 之 并发编程(守护进程、互斥锁、IPC通信机制)...

    9.5 守护进程 主进程创建守护进程 其一:守护进程会在主进程代码执行结束后就立即终止 其二:守护进程内无法再开启子进程,否则抛出异常:AssertionError: daemonic process ...

  6. Python并发编程之:多进程

    一 multiprocessing模块介绍 python中的多线程无法利用多核优势,如果想要充分地使用多核CPU的资源(os.cpu_count()查看),在python中大部分情况需要使用多进程.P ...

  7. python并发编程之semaphore(信号量)_python并发编程之多线程

    多线程 线程 1.什么是线程 进程是一个执行空间 , 线程就是其中真正工作的单位 , 每一个进程至少有一个线程(如果我们把操作系统比喻为一个工厂 , 进程就是车间 , 线程就是流水线) 进程包含了运行 ...

  8. python并发编程之semaphore(信号量)_python并发编程之Semaphore(信号量)

    threading模块里的Semaphore类实现了信号量对象,可用于控制获取资源的线程数量.所具有的acquire()和release()方法,可以用with语句的上下文管理器.当进入时,将调用ac ...

  9. python电路模型编程_14、python开发之路-并发编程之I/O模型

    十四.并发编程之I/O模型 http://www.cnblogs.com/linhaifeng/articles/7454717.html 1.模型介绍 1.1 IO种类 (1)* blocking ...

最新文章

  1. YY项目之TabLayout自定义Tab的title
  2. Sqoop找不到主类 Error: Could not find or load main class org.apache.sqoop.Sqoop
  3. Android深入浅出系列之实例应用—手机页面之间的跳转
  4. myeclipse链接数据库,SQL语句实现增删改查
  5. ATL的GUI程序设计(2)
  6. any、never......TypeScript 中这些特殊的类型,你会用了吗?
  7. struts实现文件下载
  8. c#实现简单学生信息管理系统
  9. timesten java_windows下TimesTen的配置及使用
  10. 使用超临界二氧化碳的晶圆清洗技术
  11. maven 问题解决(Failed to look for file: http://)
  12. 通过优化提高网站转化率
  13. Kodu的下载与安装---Kodu少儿编程第二天
  14. 关于出现无法查找或打开PCB文件的问题解决思路
  15. Win10笔记本触摸板在按键时或刚按完键后无法正常使用的问题
  16. vue实现通讯录功能
  17. PPT技能速成班学习笔记
  18. 写的书太受欢迎怎么办?北大《深度强化学习》作者:那就开放下载吧
  19. mysql备份 1044_Navicat访问MySQL出现1044/1045错误的解决方法
  20. springBoot项目中WebFilter不生效 @ServletComponentScan

热门文章

  1. date时区 es logstash_elastic date时区问题解决办法
  2. java中include标签的用法_原 ng-include用法分析以及多标签页面的简单实现方式
  3. c主线程如何等待子线程结束 linux_使用互斥量进行同步 - Linux C进程与多线程入门_Linux编程_Linux公社-Linux系统门户网站...
  4. 地址池命令 思科理由_论CCNA基础之常用命令
  5. xBIM 基础16 IFC的空间层次结构
  6. PKUSC2018训练日程(4.18~5.30)
  7. SPSS输出的结果都要写到文章中吗
  8. box-sizing的使用
  9. Ajax — 第一天
  10. Npoi Web 项目中(XSSFWorkbook) 导出出现无法访问已关闭的流