Python多线程正确用法实例解析


Posted in Python onMay 30, 2020

python 里有一个 threading 模块,其中提供了一个函数:

threading.Thread(target=function, args=(), kwargs={})

function 是开发者定义的线程函数,

args 是传递给线程函数的参数,必须是tuple类型,

kwargs 是可选参数,字典类型。

调用 threading.Thread 之后,会创建一个新的线程,参数 target 指定线程将要运行的函数,args 和 kwargs 则指定函数的参数来执行

function 函数。

改写一下前面的代码,将抓取的部分放在一个函数中:

def get_weather(city):
  req = requests.get('http://wthrcdn.etouch.cn/weather_mini?city=%s' % city)
  dic_city = req.json()
 
  city_data = dic_city.get('data') # 没有'data‘的话返回 []
  print(city_data.get('city'))  if city_data:
    city_forecast = city_data['forecast'][0] # 下面的都可以换成'get'方法
    print(city_forecast.get('date'))
    print(city_forecast.get('high'))
    print(city_forecast.get('low'))
    print(city_forecast.get('type'))  else:
    print('未获得')
  print()

之后,程序采用了三个循环,在第一个循环中,针对每一个城市,都创建了一个新线程,并将线程加入到一个列表中,用于之后的启动。

threads = []
cities = ['北京', '南京', '上海', '深圳', '广州', '杭州', '苏州', '天津', '西安', '成都']
files = range(len(cities))for i in files: # 创建线程
  t = threading.Thread(target=get_weather, args=(cities[i],))
  threads.append(t)

在第二个循环中,start 正式开启子线程;

for i in files:
  threads[i].start()

在第三个循环中,join 用来同步数据,主线程运行到这一步,将会停下来等待子线程运行完毕。没有这句,主线程则会忽略子线程,运行

完自己的代码后结束程序。

for i in files:
  threads[i].join()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
wxPython 入门教程
Oct 07 Python
简介Django框架中可使用的各类缓存
Jul 23 Python
Python黑魔法Descriptor描述符的实例解析
Jun 02 Python
利用Python中的pandas库对cdn日志进行分析详解
Mar 07 Python
python使用matplotlib模块绘制多条折线图、散点图
Apr 26 Python
PythonWeb项目Django部署在Ubuntu18.04腾讯云主机上
Apr 01 Python
使用python将mysql数据库的数据转换为json数据的方法
Jul 01 Python
django中账号密码验证登陆功能的实现方法
Jul 15 Python
Python 获取windows桌面路径的5种方法小结
Jul 15 Python
django 环境变量配置过程详解
Aug 06 Python
利用Python计算KS的实例详解
Mar 03 Python
Python3中的tuple函数知识点讲解
Jan 03 Python
PyQt5实现简单的计算器
May 30 #Python
PyQt5实现登录页面
May 30 #Python
Python网页解析器使用实例详解
May 30 #Python
PyQt5实现画布小程序
May 30 #Python
Java ExcutorService优雅关闭方式解析
May 30 #Python
Python定时任务APScheduler原理及实例解析
May 30 #Python
Python生成器next方法和send方法区别详解
May 30 #Python
You might like
PHP 生成的XML以FLASH获取为乱码终极解决
2009/08/07 PHP
PHP基于工厂模式实现的计算器实例
2015/07/16 PHP
php实现HTML实体编号与非ASCII字符串相互转换类实例
2016/11/02 PHP
浅谈ThinkPHP5.0版本和ThinkPHP3.2版本的区别
2017/06/17 PHP
ExtJs使用IFrame的实现代码
2010/03/24 Javascript
DD_belatedPNG,IE6下PNG透明解决方案(国外)
2010/12/06 Javascript
JS+DIV实现鼠标划过切换层效果的实例代码
2013/11/26 Javascript
javascript中的nextSibling使用陷(da)阱(keng)
2014/05/05 Javascript
jquery幻灯片插件bxslider样式改进实例
2014/10/15 Javascript
Javascript 运动中Offset的bug解决方案
2014/12/24 Javascript
JavaScript中使用Object.prototype.toString判断是否为数组
2015/04/01 Javascript
jQuery中的通配符选择器使用总结
2016/05/30 Javascript
JS控制文本域只读或可写属性的方法
2016/06/24 Javascript
AngularJS实现单独作用域内的数据操作
2016/09/05 Javascript
JS验证 只能输入小数点,数字,负数的实现方法
2016/10/07 Javascript
微信小程序 扎金花简单实例
2017/02/21 Javascript
阿里大于短信验证码node koa2的实现代码(最新)
2017/09/07 Javascript
jQuery与vue实现拖动验证码功能
2018/01/30 jQuery
JavaScript设计模式之代理模式实例分析
2019/01/16 Javascript
详解小程序毫秒级倒计时(适用于拼团秒杀功能)
2019/05/05 Javascript
简单掌握Python中glob模块查找文件路径的用法
2016/07/05 Python
基于Django的ModelForm组件(详解)
2017/12/07 Python
使用pygame模块编写贪吃蛇的实例讲解
2018/02/05 Python
对python使用http、https代理的实例讲解
2018/05/07 Python
python实现爬取百度图片的方法示例
2019/07/06 Python
python给视频添加背景音乐并改变音量的具体方法
2020/07/19 Python
python和node.js生成当前时间戳的示例
2020/09/29 Python
Django启动时找不到mysqlclient问题解决方案
2020/11/11 Python
解决html5中video标签无法播放mp4问题的办法
2017/05/07 HTML / CSS
Stuarts London美国/加拿大:世界领先的独立男装零售商之一
2019/03/18 全球购物
工商管理专业应届生求职信
2013/11/04 职场文书
咖啡书吧创业计划书
2014/01/13 职场文书
12月小学生校园广播稿
2014/02/04 职场文书
群众路线批评与自我批评发言稿
2014/10/16 职场文书
先进党支部申报材料
2014/12/24 职场文书
《游戏王:大师决斗》将推出新卡牌包4月4日上线
2022/03/31 其他游戏