python基础之多线程的操作
# 多线程实例
# 例1.单线程
from time import sleep,ctime
def task1(taskName):
for i in range(2):
print("正在执行 %s %s"%(taskName,ctime()))
sleep(2)
def task2(taskName):
for i in range(2):
print("正在执行 %s %s"%(taskName,ctime()))
sleep(1)
if __name__ == '__main__':
task1("任务一")
task2("任务二")
# 例2
from time import sleep,ctime
def task(taskName,time):
for i in range(2):
print("正在执行 %s %s"%(taskName,ctime()))
sleep(time)
if __name__ == '__main__':
task("任务一",2)
task("任务二",1)
if __name__ == '__main__':
task("任务一",2)
task("任务二",1)
# 例3 引入线程
from time import sleep,ctime
import threading #引入线程模块
def task(taskName,time):
for i in range(2):
print("正在执行 %s %s"%(taskName,ctime()))
sleep(time)
#将所有线程组装到threads中
threads = []
#将任务存放置线程中
t1 = threading.Thread(target=task,args=("任务一",2))
t2 = threading.Thread(target=task,args=("任务二",1))
threads.append(t1)
threads.append(t2)
if __name__ == '__main__':
#启动线程 start()
for i in threads:
i.start()
#结束主线程
print("结束主线程%s"%ctime())
# 4.多线程 --守护线程join()
from time import sleep,ctime
import threading #引入线程模块
def task(taskName,time):
for i in range(2):
print("正在执行 %s %s"%(taskName,ctime()))
sleep(time)
#将所有线程组装到threads中
threads = []
#将任务存放置线程中
t1 = threading.Thread(target=task,args=("任务一",2))
t2 = threading.Thread(target=task,args=("任务二",1))
threads.append(t1)
threads.append(t2)
if __name__ == '__main__':
#启动线程 start()
for i in threads:
i.start()
#守护进程 join()
for i in threads:
i.join()
#结束主线程
print("结束主线程%s"%ctime())
# 例5 优化线程的创建 批量生成线程
from time import sleep,ctime
import threading #引入线程模块
def task(taskName,time):
for i in range(2):
print("正在执行 %s %s"%(taskName,ctime()))
sleep(time)
#定义存储所有任务的列表
tasks = [("任务一",2),("任务二",1)]
#将所有线程组装到threads中
threads = []
#批量生成线程
def createThread():
for taskName,time in tasks:
t1 = threading.Thread(target=task,args=(taskName,time))
threads.append(t1)
if __name__ == '__main__':
#批量生成线程
createThread()
#启动线程 start()
for i in threads:
i.start()
#守护进程 join()
for i in threads:
i.join()
#结束主线程
print("结束主线程%s"%ctime())
# 例6 根据用户输入的任务和时间,批量生成线程
from time import sleep,ctime
import threading #引入线程模块
def task(taskName,time):
for i in range(2):
print("正在执行 %s %s"%(taskName,ctime()))
sleep(time)
#定义存储所有任务的列表
# tasks = [("任务一",2),("任务二",1)]
tasks = []
#接收用户输入的任务名和时长,追加到tasks中
def rectask(taskName,time):
tasks.append((taskName,time))
#将所有线程组装到threads中
threads = []
#创建批量生成线程
def createThread():
for taskName,time in tasks:
t1 = threading.Thread(target=task,args=(taskName,time))
threads.append(t1)
if __name__ == '__main__':
nums = int(input('请输入你要执行的任务次数:'))
for i in range(nums): #range(2) 0,1
taskName = input("请输入第%s任务名称"%(i+1))
time = int(input("请输入第%s任务执行的时长"%(i+1)))
#将任务和时长组装到tasks列表中
rectask(taskName,time)
#批量生成线程
createThread()
#启动线程 start()
for i in threads:
i.start()
#守护进程 join()
for i in threads:
i.join()
#结束主线程
print("结束主线程%s"%ctime())
python基础之多线程的操作的更多相关文章
- python基础之多线程与多进程(二)
上课笔记整理: 守护线程的作用,起到监听的作用 一个函数连接数据库 一个做守护线程,监听日志 两个线程同时取一个数据 线程---->线程安全---->线程同时进行操作数据. IO操作--- ...
- python基础之多线程与多进程(一)
并发编程? 1.为什么要有操作系统? 操作系统,位于底层硬件与应用软件之间 工作方式:向下管理硬件,向上提供接口 2.多道技术? 不断切换程序. 操作系统进程切换: 1.出现IO操作 2.固定时间 进 ...
- python基础-12 多线程queue 线程交互event 线程锁 自定义线程池 进程 进程锁 进程池 进程交互数据资源共享
Python中的进程与线程 学习知识,我们不但要知其然,还是知其所以然.你做到了你就比别人NB. 我们先了解一下什么是进程和线程. 进程与线程的历史 我们都知道计算机是由硬件和软件组成的.硬件中的CP ...
- 第三章:Python基础の函数和文件操作实战
本課主題 Set 集合和操作实战 函数介紹和操作实战 参数的深入介绍和操作实战 format 函数操作实战 lambda 表达式介绍 文件操作函数介紹和操作实战 本周作业 Set 集合和操作实战 Se ...
- python基础之os模块操作
# os模块 目录相关内置库import os# . 当前目录 .. 返回上一级目录# 1. os.path.abspath() --获取当前文件的绝对路径(不包含os模块.py) pwd# path ...
- python基础学习之文件操作&函数
1.文件处理相关 1.编码问题 ①python2与python3中的默认编码: py2默认使用ASCII码,py3默认使用utf-8 ②为什么会出现中文乱码,中文乱码的情况有哪些? #sys.stdo ...
- python基础之多线程锁机制
GIL(全局解释器锁) GIL并不是Python的特性,它是在实现Python解析器(CPython)时所引入的一个概念,是为了实现不同线程对共享资源访问的互斥,才引入了GIL 在Cpython解释器 ...
- python 基础之文件读操作
创建一个名为‘尘曦’的文件内容如下 Hadoop是一个由Apache基金会所开发的分布式系统基础架构. 用户可以在不了解分布式底层细节的情况下,开发分布式程序.充分利用集群的威力进行高速运算和存储. ...
- python基础知识-day7(文件操作)
1.文件IO操作: 1)操作文件使用的函数是open() 2)操作文件的模式: a.r:读取文件 b.w:往文件里边写内容(先删除文件里边已有的内容) c.a:是追加(在文件基础上写入新的内容) d. ...
随机推荐
- MindSpore基本原理
MindSpore基本原理 MindSpore介绍 自动微分 自动并行 安装 pip方式安装 源码编译方式安装 Docker镜像 快速入门 文档 MindSpore介绍 MindSpore是一种适用于 ...
- 激光雷达lidar与点云数据
激光雷达lidar与点云数据 DEM是分布和显示数字地形的首个广泛使用的机制. 点云是在空间中随机放置的3D点的集合.传感器发出能量脉冲并乘以其返回行程(TWTT,双向行程时间).知道了传感器的位置以 ...
- AI芯片加速图像识别
AI芯片加速图像识别 AI chip accelerates image recognition 法国研究机构CEA-Leti和LIST在2020年VLSI研讨会上展示了一种概念验证芯片,该芯片集成了 ...
- GVS智能照明再下一城,前方到站贵阳地铁2号线!
近期,"新基建"又频频刷屏,也为城轨交通建设快速发展提供了广阔的想象空间. 在新基建的导向作用下,越来越多城市加入地铁阵营.如果说普铁和高铁作为城市的发展窗口,那么地铁则是城市交通 ...
- 2、java数据结构和算法:单链表: 反转,逆序打印, 合并二个有序链表,获取倒数第n个节点, 链表的有序插入
什么也不说, 直接上代码: 功能点有: 1, 获取尾结点 2, 添加(添加节点到链表的最后面) 3, 添加(根据节点的no(排名)的大小, 有序添加) 4, 单向链表的 遍历 5, 链表的长度 6, ...
- Centos acme.sh 申请 LetsEncrypt 通配证书
1. 安装 acme.sh 注意:如果需要使用 Standalone Mode请先安装socat# yum intall socat It is recommended to install soca ...
- 【NX二次开发】属性操作总结
内容包括:1.属相创建2.判断属性是否存在3.读取属性值4.时间属性转换成字符串5.统计属性的数量6.删除指定属性7.删除全部属性 源码: 1 #include <stdlib.h> 2 ...
- python学习笔记02-简单游戏
一拖又过去快一个月了,哭聊.. 惰性千万不要有.. 今天简单接触一下条件语句 一个简单的文字游戏 1 print('----第一个文字游戏----') 2 temp = input('猜一下现在心里想 ...
- JVM面试题(史上最强、持续更新、吐血推荐)
文章很长而且持续更新,建议收藏起来,慢慢读! 高并发 发烧友社群:疯狂创客圈(总入口) 奉上以下珍贵的学习资源: 疯狂创客圈 经典图书 : 极致经典 + 社群大片好评 < Java 高并发 三部 ...
- 身为一枚优秀的程序员必备的基于Redis的分布式锁和Redlock算法
1 前言 今天开始来和大家一起学习一下Redis实际应用篇,会写几个Redis的常见应用. 在我看来Redis最为典型的应用就是作为分布式缓存系统,其他的一些应用本质上并不是杀手锏功能,是基于Redi ...