线程队列

1

import queue

q=queue.Queue()
q.put('123')
q.put('456')
q.put('789')
print(q.get())
print(q.get())
print(q.get())
q.task_done()
# q.task_done()
q.task_done()
q.join() #等到队列里的元素都被消费才进行下一步
q.put(1)
print(q.get())

2

import queue

q=queue.LifoQueue()		#栈,先进后出
q.put('123')
q.put('456')
q.put('789')
print(q.get())
print(q.get())
print(q.get())
q.task_done()
q.task_done()
q.task_done()
q.join() #等到队列里的元素都被消费才进行下一步
q.put(1)
print(q.get())

3

import queue

q=queue.PriorityQueue()		#以元祖的形式输入,第一个整形为优先级,小的先输出
q.put((1,'123'))
q.put((4,'456'))
q.put((2,'789'))
print(q.get())
print(q.get())
print(q.get())
q.task_done()
q.task_done()
q.task_done()
q.join() #等到队列里的元素都被消费才进行下一步
q.put((1,'ad'))
print(q.get())

线程定时器

from threading import Thread,Timer
import time def test():
print('start')
time.sleep(1)
print('end') t=Timer(3,function=test) #3秒后开启线程
t.start()

进程池和线程池

from concurrent.futures import ThreadPoolExecutor
import time def test():
print(time.time())
time.sleep(1)
# return i**3
pool=ThreadPoolExecutor(5) #线程池,进程池用ProcessPoolExecutor
list=[]
for i in range(20):
furture=pool.submit(test)
list.append(furture)
for i in list:
print(i.result())
from concurrent.futures import ProcessPoolExecutor,ThreadPoolExecutor
from threading import currentThread
from multiprocessing import current_process
import time def task(i):
print(f'{currentThread().name} 在执行任务 {i}')
# print(f'进程 {current_process().name} 在执行任务 {i}')
time.sleep(1)
return i**2 def parse(future):
# 处理拿到的结果
print(future.result()) if __name__ == '__main__':
pool = ThreadPoolExecutor(4) # 池子里只有4个线程
# pool = ProcessPoolExecutor(4) # 池子里只有4个线程
fu_list = []
for i in range(20):
# pool.submit(task,i) # task任务要做20次,4个线程负责做这个事
future = pool.submit(task,i) # task任务要做20次,4个进程负责做这个事
future.add_done_callback(parse)
# 为当前任务绑定了一个函数,在当前任务执行结束的时候会触发这个函数,
# 会把future对象作为参数传给函数
# 这个称之为回调函数,处理完了回来就调用这个函数. # print(future.result()) # 如果没有结果一直等待拿到结果,导致了所有的任务都在串行 # pool.shutdown() # 关闭了池的入口,会等待所有的任务执行完,结束阻塞.
# for fu in fu_list:
# print(fu.result())

python-day40(正式学习)的更多相关文章

  1. Python 装饰器学习

    Python装饰器学习(九步入门)   这是在Python学习小组上介绍的内容,现学现卖.多练习是好的学习方式. 第一步:最简单的函数,准备附加额外功能 1 2 3 4 5 6 7 8 # -*- c ...

  2. Requests:Python HTTP Module学习笔记(一)(转)

    Requests:Python HTTP Module学习笔记(一) 在学习用python写爬虫的时候用到了Requests这个Http网络库,这个库简单好用并且功能强大,完全可以代替python的标 ...

  3. 从Theano到Lasagne:基于Python的深度学习的框架和库

    从Theano到Lasagne:基于Python的深度学习的框架和库 摘要:最近,深度神经网络以“Deep Dreams”形式在网站中如雨后春笋般出现,或是像谷歌研究原创论文中描述的那样:Incept ...

  4. Comprehensive learning path – Data Science in Python深入学习路径-使用python数据中学习

    http://blog.csdn.net/pipisorry/article/details/44245575 关于怎么学习python,并将python用于数据科学.数据分析.机器学习中的一篇非常好 ...

  5. (转载)Python装饰器学习

    转载出处:http://www.cnblogs.com/rhcad/archive/2011/12/21/2295507.html 这是在Python学习小组上介绍的内容,现学现卖.多练习是好的学习方 ...

  6. 正式学习React(五) react-redux源码分析

    磨刀不误砍柴工,咱先把react-redux里的工具函数分析一下: 源码点这里  shallowEqual.js export default function shallowEqual(objA, ...

  7. 正式学习React(一) 开始学习之前必读

    为什么要加这个必读!因为webpack本身是基于node环境的, 里面会涉及很多路径问题,我们可能对paths怎么写!webpack又是怎么找到这些paths的很迷惑. 本文是我已经写完正式学习Rea ...

  8. python网络爬虫学习笔记

    python网络爬虫学习笔记 By 钟桓 9月 4 2014 更新日期:9月 4 2014 文章文件夹 1. 介绍: 2. 从简单语句中開始: 3. 传送数据给server 4. HTTP头-描写叙述 ...

  9. Python装饰器学习

    Python装饰器学习(九步入门)   这是在Python学习小组上介绍的内容,现学现卖.多练习是好的学习方式. 第一步:最简单的函数,准备附加额外功能 ? 1 2 3 4 5 6 7 8 # -*- ...

  10. Python的基础学习(第二周)

    模块初始 sys模块 import sys sys.path #打印环境变量 sys.argv#打印该文件路径 #注意:该文件名字不能跟导入模块名字相同 os模块 import os cmd_res ...

随机推荐

  1. python数据分析-数据导入

    1.导入CSV格式数据 import pandas data = pandas.read_csv("C:\\Users\\zhaosai\\Desktop\\进击的DBA\\谁说菜鸟不会数据 ...

  2. Spring Boot教程(三十四)使用Redis数据库(2)

    除了String类型,实战中我们还经常会在Redis中存储对象,这时候我们就会想是否可以使用类似RedisTemplate<String, User>来初始化并进行操作.但是Spring ...

  3. Centos安装JIRA 7.13版本(自己在官方下载最新版)以及破解

    后半部分流程来自:https://www.cnblogs.com/kaola8023/p/6950481.html 安装准备(切记将许可证号备份) 1.准备mysql需要5.6以及以上的版本(注意:建 ...

  4. $\LaTeX$数学公式大全5

    $5\ Variable-sized\ symbols(displayed\ formulae\ show\ larger\ version)$$\sum$ \sum$\prod$ \prod$\co ...

  5. Keras学习笔记一:修改数据读入方式为本地图片读入

    第一种方法: Keras官方给的图片去噪示例要自动下载mnist数据集并处理,不能修改和加入自己的数据集. from keras.datasets import mnist (x_train, _), ...

  6. window7上爬虫框架Scrapy的安装 --错误分析lxml

    本文讲解的是python已经安装成功的情况下,且pip可以使用 版本:python2.7.10 #安装 pip install Scrapy 在安装Scrapy框架时总会报lxml安装不了的各种错误, ...

  7. 阿里云服务器ECS装好宝塔 但访问不了面板的解决方法

    (SSH) (phpmyadmin) 如果你进入面板里修改了面板端口或FTP端口,记得要在安全组和面板防火墙放行相应端口

  8. 在jdk7下慎用String.intern()作为synchronized的对象锁

    有一段这样的代码: for (int i = 0; i < 10000000; i++) { ("bluedavy" + i).intern(); if(i % 100 == ...

  9. Carousel 走马灯

    在有限空间内,循环播放同一类型的图片.文字等内容 基础用法 适用广泛的基础用法 结合使用el-carousel和el-carousel-item标签就得到了一个走马灯.幻灯片的内容是任意的,需要放在e ...

  10. c# httphelper (苏飞老师)

    /// <summary> /// 类说明:HttpHelper类,用来实现Http访问,Post或者Get方式的,直接访问,带Cookie的,带证书的等方式,可以设置代理 /// 重要提 ...