#!/usr/bin/env python
# -*- coding: utf-8 -*- """
concurrent 用于线程池和进程池编程而且更加容易,在Python3.2中才有。
""" import sys
from concurrent.futures import ThreadPoolExecutor, as_completed, wait
from multiprocessing import Manager Manager().dict() """
线程池
主线程可以获取某一个线程的状态或者某一个任务的状态以及返回值
当一个线程完成的时候让主线程立即知道
""" import time
def task(num):
time.sleep(num)
print("Thread", num)
return num def NormalUsage():
# 实例化线程池并设置线程池大小
executor = ThreadPoolExecutor(max_workers=5)
# 通过submit提交执行的函数到线程池,并返回futures的类对象,这里是立即返回非阻塞
task1 = executor.submit(task, (1))
task2 = executor.submit(task, (2))
# done()方法用于判定某个任务十分完成
print(task1.done())
# result() 方法可以获取返回值,阻塞的方法
print(task1.result())
# 关闭线程池
executor.shutdown(wait=True) def BBB():
executor = ThreadPoolExecutor(max_workers=5)
# 如何已经成功的任务的返回
tList = []
for num in range(10):
tList.append(executor.submit(task, (num)))
# 主要就是 as_completed()方法,这是一个生成器,传递列表进去,这个列表就是包含线程的列表
for future in as_completed(tList):
data = future.result()
print(data)
executor.shutdown(wait=True) def CCC():
# 实例化线程池并设置线程池大小
executor = ThreadPoolExecutor(max_workers=5)
# 通过submit提交执行的函数到线程池,并返回futures的类对象,这里是立即返回非阻塞
task1 = executor.submit(task, (1))
task2 = executor.submit(task, (2))
# 等待线程完成后再执行。return_when 是什么时候返回,默认是所有线程执行完毕,你可以设置 FIRST_COMPLETED 第一个线程完成就不阻塞了
wait([task1, task2], return_when="ALL_COMPLETED")
print("main")
executor.shutdown(wait=True) if __name__ == '__main__':
CCC()

  

Python的线程池的更多相关文章

  1. Python的线程池实现

    # -*- coding: utf-8 -*- #Python的线程池实现 import Queue import threading import sys import time import ur ...

  2. Python之路【第八篇】python实现线程池

    线程池概念 什么是线程池?诸如web服务器.数据库服务器.文件服务器和邮件服务器等许多服务器应用都面向处理来自某些远程来源的大量短小的任务.构建服务器应用程序的一个过于简单的模型是:每当一个请求到达就 ...

  3. Python之线程池

    版本一: #!/usr/bin/env python # -*- coding:utf-8 -*- import Queue import threading class ThreadPool(obj ...

  4. python自定义线程池

    关于python的多线程,由与GIL的存在被广大群主所诟病,说python的多线程不是真正的多线程.但多线程处理IO密集的任务效率还是可以杠杠的. 我实现的这个线程池其实是根据银角的思路来实现的. 主 ...

  5. [python] ThreadPoolExecutor线程池 python 线程池

    初识 Python中已经有了threading模块,为什么还需要线程池呢,线程池又是什么东西呢?在介绍线程同步的信号量机制的时候,举得例子是爬虫的例子,需要控制同时爬取的线程数,例子中创建了20个线程 ...

  6. 《Python》线程池、携程

    一.线程池(concurrent.futures模块) #1 介绍 concurrent.futures模块提供了高度封装的异步调用接口 ThreadPoolExecutor:线程池,提供异步调用 P ...

  7. [python] ThreadPoolExecutor线程池

    初识 Python中已经有了threading模块,为什么还需要线程池呢,线程池又是什么东西呢?在介绍线程同步的信号量机制的时候,举得例子是爬虫的例子,需要控制同时爬取的线程数,例子中创建了20个线程 ...

  8. python实现线程池

    线程池 简单线程池 import queue import threading import time class ThreadPool(object): #创建线程池类 def __init__(s ...

  9. python 绝版线程池

    2.绝版线程池设计思路:运用队列queue a.队列里面放任务 b.线程一次次去取任务,线程一空闲就去取任务 import queueimport threadingimport contextlib ...

随机推荐

  1. 【转】jquery-easyui中datagrid的单击删除此行

    最近在easyui的项目开发,easyui封装了许多方法,用起来很方便,但同时也遇到了不少的问题. 如果在datagrid中直接将index传给easyui自带的deletRow方法来删除当前点击行, ...

  2. DOM常见操作

    一.查找 1.直接查找 document.getElementById           根据ID获取一个标签 document.getElementsByName         根据name属性 ...

  3. 【链表】Bzoj1098[POI2007]办公楼biu

    Description FGD开办了一家电话公司.他雇用了N个职员,给了每个职员一部手机.每个职员的手机里都存储有一些同事的电话号码.由于FGD的公司规模不断扩大,旧的办公楼已经显得十分狭窄,FGD决 ...

  4. maven+springmvc的配置

    1. 首先创建1个mavenweb项目  如果没有的话最好是去官网下载一个最新版本的eclipse  里面什么都有 maven/gradle 啥的 2. 选择路径   没啥影响 就是一个路径 默认就行 ...

  5. 【英国毕业原版】-《博尔顿大学毕业证书》Bolton一模一样原件

    ☞博尔顿大学毕业证书[微/Q:2544033233◆WeChat:CC6669834]UC毕业证书/联系人Alice[查看点击百度快照查看][留信网学历认证&博士&硕士&海归& ...

  6. TensorFlow之CNN:运用Batch Norm、Dropout和早停优化卷积神经网络

    学卷积神经网络的理论的时候,我觉得自己看懂了,可是到了用代码来搭建一个卷积神经网络时,我发现自己有太多模糊的地方.这次还是基于MINIST数据集搭建一个卷积神经网络,首先给出一个基本的模型,然后再用B ...

  7. 【SQL】面面俱到 | 在SQL中使用CUBE和ROLLUP实现数据多维汇总

    偶然在网上看到一篇文章,讲到数据汇总,提到了CUBE,感觉有些晦涩,想试着自己表述一下.同时,个人也认为CUBE还是很有用的,对SQL或数据分析感兴趣的小伙伴不妨了解一下,或许有用呢! 先设定个需求, ...

  8. MIPCache 域名升级

    一.MIPCache URL 是什么 举个例子,MIP 官网的 URL 为: https://www.mipengine.org 对应的 MIPCache 的 URL 为: https://mipca ...

  9. Eclipse Debug调试遇到的问题

    在使用Debug模式前,一定要先打好断点.快捷调试方法:   在使用过程中,可以只保留Console,Variables,Debug窗口,把其他无用的窗口最小化掉,或者删掉即可.如果要恢复删掉的试图, ...

  10. 深入理解es6-Promise对象

    前言     在之前翻博客时,看到promise,又重读了一边,突然发现理解很浅,记的笔记也不是很好理解,又重新学习promise,加深理解,学以致用     在promise出来之前,js常用解决异 ...