python基础之多线程的操作
2024-09-07 19:59:53
# 多线程实例
# 例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())
最新文章
- 净捡软柿子捏--jQuery 遍历方法
- 渡轮问题Ship
- 修改ubuntu DNS的步骤/wget url报错: unable to resolve host address的解决方法
- javascript unit testing
- maven学习笔记(定制一个Web项目)
- hive0.13网络接口安装
- USACO Section 2.3: Controlling Companies
- Android API 文档 离线秒开方法
- Inno Setup打包注意事项
- mysql中配置ssl_key、ssl-cert、ssl-ca的路径及建立ssl连接
- 023_supervisorctl管理服务注意事项
- XVIII Open Cup named after E.V. Pankratiev. Grand Prix of Saratov
- 关于Dubbo和Spring异步注解@Async的冲突
- 使用Git上传项目到Gitee
- QLabel-标签控件的应用
- Ubuntu菜鸟入门(十八)————解决Ubuntu下Sublime Text 3无法输入中文
- python day10作业
- MATLAB总结二
- haproxy+keepalived原理特点
- vue--父组件主动获取子组件的方法