7.22 python线程(3)
2018-7-22 10:28:29 回来啦!
6.条件
# !/usr/bin/env python
# !--*--coding:utf-8 --*--
# !@Time :2018/7/20 18:01
# !@Author TrueNewBee
# 条件
# 2018-7-20 18:47:17 去俺弟弟家玩去,后天归来
# 2018-7-22 10:18:03 回来了
# 条件
# 锁
# acquire release
# 一个条件被创建之初 默认有一个False状态
# False状态 会影响wait()一直处于等待状态
# notify(int数据类型) 制造一串钥匙
# 不大重要,只能停留在面试中
from threading import Condition, Thread def func(con1, i1):
con1.acquire()
con1.wait() # 等钥匙
print('在第%s个循环里' % i1)
con.release() con = Condition()
for i in range(10):
Thread(target=func, args=(con, i)).start()
while True:
num = int(input('>>>'))
con.acquire()
con.notify(num) # 造钥匙
con.release()
7.定时器
# !/usr/bin/env python
# !--*--coding:utf-8 --*--
# !@Time :2018/7/22 10:30
# !@Author TrueNewBee
# 用的不多,知道这个组件就好了
import time
from threading import Timer def func():
print('时间同步') if __name__ == '__main__':
while True:
Timer(5, func).start() # 非阻塞的
time.sleep(5)
8.队列
# !/usr/bin/env python
# !--*--coding:utf-8 --*--
# !@Time :2018/7/22 10:49
# !@Author TrueNewBee
# queue
import queue q = queue.Queue() # 队列先进先出
# q.put()
# q.get()
# q.put_nowait()
# q.get_nowait() queue.LifoQueue() # 栈 先进后出
q.put((50, 'a'))
q.put((30, 'r'))
q.put((1, 'z'))
q.put((1, 'd')) print(q.get())
9.池
# !/usr/bin/env python
# !--*--coding:utf-8 --*--
# !@Time :2018/7/22 11:19
# !@Author TrueNewBee
import time
from concurrent.futures import ThreadPoolExecutor def func(n):
time.sleep(2)
print(n)
return n*n tpool= ThreadPoolExecutor(max_workers=5) # 默认 不要超过cpu个数*5
t_list = []
for i in range(20):
t = tpool.submit(func, i) # 异步提交任务
t_list.append(t)
tpool.shutdown() # close+join
print('主线程')
for t in t_list:
print('****', t.result())
7.22 python线程(3)的更多相关文章
- Python学习——Python线程
一.线程创建 #方法一:将要执行的方法作为参数传给Thread的构造方法 import threading import time def show(arg): time.sleep(2) print ...
- python 线程 进程
1.进程与线程优.缺点的比较总言:使用进程和线程的目的,提高执行效率. 进程: 优点:能利用机器的多核性能,同时进行多个操作. 缺点:需要耗费资源,重新开辟内存空间,耗内存. 线程: 优点:共享内存( ...
- python线程入门
目录 python线程入门 线程与进程 线程 总结 参考 python线程入门 正常情况下,我们在启动一个程序的时候.这个程序会先启动一个进程,启动之后这个进程会启动起来一个线程.这个线程再去处理事务 ...
- python基础-第九篇-9.1初了解Python线程、进程、协程
了解相关概念之前,我们先来看一张图 进程: 优点:同时利用多个cpu,能够同时进行多个操作 缺点:耗费资源(重新开辟内存空间) 线程: 优点:共享内存,IO操作时候,创造并发操作 缺点:抢占资源 通过 ...
- 操作系统/应用程序、操作中的“并发”、线程和进程,python中线程和进程(GIL锁),python线程编写+锁
并发编程前言: 1.网络应用 1)爬虫 直接应用并发编程: 2)网络框架 django flask tornado 源码-并发编程 3)socketserver 源码-并发编程 2.运维领域 1)自动 ...
- python线程信号量semaphore(33)
通过前面对 线程互斥锁lock / 线程事件event / 线程条件变量condition / 线程定时器timer 的讲解,相信你对线程threading模块已经有了一定的了解,同时执行多个线程的 ...
- python线程定时器Timer(32)
相对前面几篇python线程内容而言,本片内容相对比较简单,定时器 – 顾名思义,必然用于定时任务. 一.线程定时器Timer原理 原理比较简单,指定时间间隔后启动线程!适用场景:完成定时任务,例如: ...
- python线程互斥锁Lock(29)
在前一篇文章 python线程创建和传参 中我们介绍了关于python线程的一些简单函数使用和线程的参数传递,使用多线程可以同时执行多个任务,提高开发效率,但是在实际开发中往往我们会碰到线程同步问题, ...
- 5分钟看懂系列:Python 线程池原理及实现
概述 传统多线程方案会使用"即时创建, 即时销毁"的策略.尽管与创建进程相比,创建线程的时间已经大大的缩短,但是如果提交给线程的任务是执行时间较短,而且执行次数极其频繁,那么服务器 ...
随机推荐
- js数组获取相同元素个数,归档排序
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- IIS URL Rewrite – Installation and Use
IIS URL Rewrite – Installation and Use Posted by Nick LeFevre | Leave a reply IIS URL Rewrite Instal ...
- Ansible 使用 Playbook 管理 Nginx 配置文件
前面我们已经安装完 Nginx,但是在日常维护中经常需要修改配置文件,并重新加载配置文件,因此来写一个管理 Nginx 配置文件的 Playbook: [root@localhost ~]$ mkdi ...
- Linux chmod和chown更改文件目录的所属者命令的用法
一.chown 命令 用途:更改文件的所有者或组.命令由单词change owner组合而成. 使用示例: 1,更改文件的所有者: chown jim program.c 文件 program.c 的 ...
- N76E003之IIC
I2C 总线提供了一种串行通信方式,用在 MCU 与 EEPROM,LCD模块,温度传感器等等之间控制.I2C 用两条线 (数据线SDA 和时钟线 SCL) 在设备间传输数据.I2C 总线用作主机与从 ...
- N76E003系统时钟
系统时钟源N76E003共有3种系统时钟源,包括: 内部高速/低速振荡器.外部输入时钟.它们每一个都可以作为N76E003的系统时钟源.开启不同的时钟源可能会影响到多功能引脚P3.0/XIN .内部振 ...
- .net垃圾收集机制【转】
在.NET Framework中,内存中的资源(即所有二进制信息的集合)分为"托管资源"和"非托管资源".托管资源必须接受.NET Framework的CLR( ...
- iOS - 系统权限(关键时刻很有用的)
iOS开发中权限问题: APP开发避免不开系统权限的问题,如何在APP以更加友好的方式向用户展示系统权限,似乎也是开发过程中值得深思的一件事: 那如何提高APP获取iOS系统权限的通过率呢?有以下几种 ...
- struts.xml文件中配置tiles.xml
Apache Tiles是一个JavaEE应用的页面布局框架.Tiles框架提供了一种模板机制,可以为某一类页面定义一个通用的模板,该模板定义了页面的整体布局.布局由可以复用的多个块组成,每个页面可以 ...
- 【python问题】UnicodeEncodeError: 'ascii' codec can't encode characters in position 306-309: ordinal not in range(128)
今天在写python爬虫的时候,遇到一个问题 UnicodeEncodeError: 'ascii' codec can't encode characters in position 306-309 ...