python的_thread模块来实现多线程(python核心编程例子)
python中_thread模块是一个低级别的多线程模块,它的问题在于主线程运行完毕后,会立马把子线程给结束掉,不加处理地使用_thread模块是不合适的.这里把书中讲述的有关_thread使用的例子自己实现了一遍,做以记录.
#例子一:自己手动在主线程中设置等待时间import _thread from time import ctime, sleepdef loop0():print("loop0 starts at:{}".format(ctime()))sleep(4)print("loop0 ends at:{}".format(ctime()))def loop1():print("loop1 starts at:{}".format(ctime()))sleep(2)print("loop1 ends at:{}".format(ctime()))if __name__ == "__main__":print("start_time:{}".format(ctime()))_thread.start_new_thread(loop0, ())_thread.start_new_thread(loop1, ())#此处设置sleep(6)是因为_thread主线程结束后,会马上杀死其他线程sleep(6)print("end_time:{}".format(ctime()))
#例子二:通过锁可以实现所有线程全部运行后立即退出import _thread from time import ctime, sleep#每个loop等待的时间 wait_time_list = [4, 2]def loop(i, wait_time, lock):"""根据传入参数创建多个loop函数:param i::param wait_time::param lock::return:"""print("loop{} starts at:{}".format(i, ctime()))sleep(wait_time)print("loop{} ends at:{}".format(i, ctime()))#释放锁 lock.release()def main():print("start_time:", ctime())nloops = range(len(wait_time_list))locks = []#创建锁,上锁for i in nloops:lock = _thread.allocate_lock()lock.acquire()locks.append(lock)#之所以另起一个循环,是为了尽量保证所有线程能够同时启动,因为上面的循环中锁的操作也要花费一些时间for i in nloops:_thread.start_new_thread(loop, (i, wait_time_list[i], locks[i]))#loop函数中的参数放到元组里#等待所有的子线程释放锁后,结束主线程.(等待时间取决于执行时间最长的子线程,假如第一个子线程执行时间最长,等它执行完毕,下面的循环就不会再进入了.)for i in nloops:#注意这里locked()要带括号while locks[i].locked():passprint("all done! end_time:", ctime())if __name__ == '__main__':main()
转载于:https://www.cnblogs.com/Stephen-Qin/p/10354071.html
python的_thread模块来实现多线程(python核心编程例子)相关推荐
- Python 日志logging模块初探及多线程踩坑(2)
系列文章: Python 日志logging模块初探及多线程踩坑(1) Python 日志logging模块初探及多线程踩坑(2) 接着上面一篇文章,我们这篇来写一个多进程兼容且无损性能的 Timed ...
- python 命令行 模块_深入浅析Python 命令行模块 Click
Click 是用 Python 写的一个第三方模块,用于快速创建命令行.我们知道,Python 内置了一个 Argparse 的标准库用于创建命令行,但使用起来有些繁琐,Click 相比于 Argpa ...
- python如何退出模块_如何将一个 Python 函数进行模块化封装
使用 Python 函数来最大程度地减少重复任务编码工作量. -- Seth Kenlon(作者) 你是否对函数.类.方法.库和模块等花哨的编程术语感到困惑?你是否在与变量作用域斗争?无论你是自学成才 ...
- python使用 pywin32 模块操作 excel,Python 操作 excel 系列之五
本篇博客是 Python 操作 excel 系列的第5篇,前4篇博客阅读地址如下所示: 2022 之Python操作 Excel,xlrd 与 xlwt 模块一文掌握 Python 操作 Excel, ...
- python包和模块推荐_对于Python包和模块的10个常识清单
有同砚题目对于模块与包的题目,特给新人总结的对于Python包与模块的10个常识清单. 0.一个模块(module)就是一个py文件,模块的名字就是该文件的名字(不包罗后缀) 1.一个 包(packa ...
- python中pygame模块下载_基于python中pygame模块的Linux下安装过程(详解)
pyhthon中pygame模块怎么安装?pyhthon中pygame模块怎么安装?鄙人为初二一名学生,闲来无事 钻研起电这句话还是建议问一下你们代课老师吧,因为你们老师是这方面专家,诺儿那边的话肯定 ...
- python 如何判断一个函数执行完成_Python核心编程的四大神兽迭代器、生成器 、闭包以及装饰器...
本文将主要分为4大部分,分别介绍Python核心编程中的迭代器.生成器 .闭包以及装饰器. 生成器 生成器是生成一个值的特殊函数,它具有这样的特点:第一次执行该函数时,先从头按顺序执行,在碰到yiel ...
- python程序设计从基础到开发电子书_Python核心编程从入门到开发实战(pdf+txt+epub+azw3+mobi电子书在线阅读下载)...
作者:朱红庆 格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT 内容简介: 本书以学会.用好 Python 语言进行软件编程为目标,不仅讲解了基本概念.数据类型.变量.运算符. ...
- python使用urllib模块开发的多线程豆瓣小站mp3下载器
#! /usr/bin/python2.7 # -- coding:utf-8 -- import os, urllib,urllib2, thread,threading import re #匹配 ...
最新文章
- linux 下 使用wget 下载 jdk资源 命令
- 《算法》练习题1.1.1--1.1.39 答案解析
- 关于 sql语句的一些小优化
- 设计师更高效_如何丢掉我的工作使我成为一名更好的设计师
- C# IIS ManagementException: 访问遭到拒绝
- Linux命令之查找
- 亡羊补牢or防患未然?在数百套多种数据库中找出风险点(附PPT下载)
- LG能源解决方案去年年底已开始研发磷酸铁锂电池
- fragment与activity之间的通信
- ParaFi Capital资产管理规模超1亿美元,至少投资22家公司或协议
- tcm_fc自动加载 linux,[Fibre Channle 实战之四]centos7中如何添加tcm_qla2xxx支持
- 在MFC中通过opencv显示摄像头视频或者文件视频
- Django的Form另类实现SelectMultiple
- flex 平铺布局_Flex布局的个人见解~阮一峰的网络日志
- CC2530之定时器T3
- fit对数正态分布matlab,拟合对数正态分布使用Scipy与Matlab
- 100首经典广告背景音乐
- 计算机界面显示不完整,win10系统打开软件界面发现显示不全的方法介绍
- 棒约翰任命Marvin Boakye为首位首席人力官
- 建造者模式和桥接模式,答应我告别ifelse好吗?
热门文章
- 遭遇ARP欺骗的处理办法
- ASP.NET3种验证码[转]
- 安卓 激活应用组件 intent
- ACDSee Photo Studio Ultimate 2020中文版
- Python网络_TCP/IP简介
- python爬虫(二)_HTTP的请求和响应
- 荣耀 6 安装 SD 卡,提示:SD卡已安全移除
- ElasticSearch 2 (26) - 语言处理系列之打字或拼写错误
- apktool+dex2jar+jd_gui
- Java 学习(21)--集合笔试题