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 ...
随机推荐
- java某些基础知识点整理
1. \n换行 \r回车 \"双引号 \\反斜杠 2.Java语言提供了八种基本类型.六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型. byte: byte 数据类型是 ...
- Elasticsearch笔记七之setting,mapping,分片查询方式
Elasticsearch笔记七之setting,mapping,分片查询方式 setting 通过setting可以更改es配置可以用来修改副本数和分片数. 1:查看,通过curl或浏览器可以看到副 ...
- [NOIP2016]愤怒的小鸟 D2 T3
Description Kiana最近沉迷于一款神奇的游戏无法自拔. 简单来说,这款游戏是在一个平面上进行的. 有一架弹弓位于(0,0)处,每次Kiana可以用它向第一象限发射一只红色的小鸟,小鸟们的 ...
- Linux下网站根目录权限
网站根目录权限遵循: 文件644 文件夹755 权限用户和用户组www-data 如出现文件权限问题时,请执行下面3条命令: chown -R www-data.www-data /usr/local ...
- MATLAB——画图(经典)
今天我发现一个非常奇怪的事情,如果你喜欢一样东西或者说是要干一件事,并不一定要把它所在领域的所有都做好, 只要做好你喜欢的就可以了,正如现在的我,突然想学习MATLAB(想画图)那么你只要把一些基础的 ...
- sql中1=1的and和or问题
SELECT * FROM mentor_teacher WHERE 1 = 1 AND status = ? limit 0, 10 sql语句中如果有1=1的问题, 那么,如果是and并且的关 ...
- 开发 chrome 扩展 GitHub-Remarks 的一些想法以及遗憾
前文 对于单页应用中如何监听 URL 变化的思考 说到我在开发 chrome 扩展 GitHub Remarks 中遇到的一个问题,本文来聊聊开发这个扩展的前后心路历程. 为什么开发这个扩展?前文说到 ...
- CBC 字节反转攻击
一.CBC 简介 现代密码体制 现代密码中的加密体制一般分为对称加密体制(Symmetric Key Encryption)和非对称加密体制(Asymmetric Key Encryption).对称 ...
- Angular(02)-- Angular-CLI命令
声明 本系列文章内容梳理自以下来源: Angular 官方中文版教程 官方的教程,其实已经很详细且易懂,这里再次梳理的目的在于复习和巩固相关知识点,刚开始接触学习 Angular 的还是建议以官网为主 ...
- Android Service与Activity的交互
Android中有时候需要在Service中改变Activity的UI,或者在Activity中修改Service中的数值.首先必须使用与Activity绑定的Service,有三种方式可以实现.第一 ...