Python的线程池
#!/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的线程池的更多相关文章
- Python的线程池实现
# -*- coding: utf-8 -*- #Python的线程池实现 import Queue import threading import sys import time import ur ...
- Python之路【第八篇】python实现线程池
线程池概念 什么是线程池?诸如web服务器.数据库服务器.文件服务器和邮件服务器等许多服务器应用都面向处理来自某些远程来源的大量短小的任务.构建服务器应用程序的一个过于简单的模型是:每当一个请求到达就 ...
- Python之线程池
版本一: #!/usr/bin/env python # -*- coding:utf-8 -*- import Queue import threading class ThreadPool(obj ...
- python自定义线程池
关于python的多线程,由与GIL的存在被广大群主所诟病,说python的多线程不是真正的多线程.但多线程处理IO密集的任务效率还是可以杠杠的. 我实现的这个线程池其实是根据银角的思路来实现的. 主 ...
- [python] ThreadPoolExecutor线程池 python 线程池
初识 Python中已经有了threading模块,为什么还需要线程池呢,线程池又是什么东西呢?在介绍线程同步的信号量机制的时候,举得例子是爬虫的例子,需要控制同时爬取的线程数,例子中创建了20个线程 ...
- 《Python》线程池、携程
一.线程池(concurrent.futures模块) #1 介绍 concurrent.futures模块提供了高度封装的异步调用接口 ThreadPoolExecutor:线程池,提供异步调用 P ...
- [python] ThreadPoolExecutor线程池
初识 Python中已经有了threading模块,为什么还需要线程池呢,线程池又是什么东西呢?在介绍线程同步的信号量机制的时候,举得例子是爬虫的例子,需要控制同时爬取的线程数,例子中创建了20个线程 ...
- python实现线程池
线程池 简单线程池 import queue import threading import time class ThreadPool(object): #创建线程池类 def __init__(s ...
- python 绝版线程池
2.绝版线程池设计思路:运用队列queue a.队列里面放任务 b.线程一次次去取任务,线程一空闲就去取任务 import queueimport threadingimport contextlib ...
随机推荐
- 时间戳转换成时间js(年-月-日,例如“2017-04-22”)
function GetDateByShiJianChuo(timespan) { var date = new Date(parseInt(timespan.replace("/Date( ...
- 加密算法:DigestUtils与java MessageDigest
1.使用Spring的DigestUtils public class StringUtilTest { static final String TARGET = "changeme&quo ...
- 【SQL】面面俱到 | 在SQL中使用CUBE和ROLLUP实现数据多维汇总
偶然在网上看到一篇文章,讲到数据汇总,提到了CUBE,感觉有些晦涩,想试着自己表述一下.同时,个人也认为CUBE还是很有用的,对SQL或数据分析感兴趣的小伙伴不妨了解一下,或许有用呢! 先设定个需求, ...
- 微服务架构 - CentOS7离线部署docker
1.环境准备 系统环境为: CentOS Linux release 7.5.1804 (Core) 安装docker版本为: 17.12.0-ce 2.准备部署文件 在http://mirrors. ...
- java代码之美(11)---java代码的优化
java代码的优化 随着自己做开发时间的增长,越来越理解雷布斯说的: 敲代码要像写诗一样美.也能理解有一次面试官问我你对代码有洁癖吗? 一段好的代码会让人看就像诗一样,也像一个干净房间会让人看去很舒服 ...
- asp.net core系列 54 IS4用客户端凭据保护API
一. 概述 本篇开始进入IS4实战学习,从第一个示例开始,该示例是 “使用客户端凭据保护API”,这是使用IdentityServer保护api的最基本场景.该示例涉及到三个项目包括:Identity ...
- C#EF中,使用类似于SQL中的% 模糊查询
最近在做项目的时候需要使用到模糊查询,但是后台使用EF写的 而不是ADO或者是Dapper,如果是这样的话,我们就可以使用Sql语句直接进行模糊查询 现在我们需要在LINQ中使用类似于模糊查询 在EF ...
- json转js对象方法,JS对象转JSON方法
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- 基于ArcGISServer进行分页矢量查询的方案进阶
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1. 背景 在空间查询中,我们对查询结果要求以分页形式进行展示.G ...
- 虹软人脸识别ArcFace2.0 Android SDK使用教程
一.获取SDK 1.进入ArcFace2.0的申请地址 https://ai.arcsoft.com.cn/product/arcface.html 2.填写信息申请并提交 申请通过后即可下载SDK, ...