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 相关文章推荐
Python实现个人微信号自动监控告警的示例
Jul 03 Python
django url到views参数传递的实例
Jul 19 Python
Tensorflow的常用矩阵生成方式
Jan 04 Python
Python urlopen()和urlretrieve()用法解析
Jan 07 Python
Python动态导入模块和反射机制详解
Feb 18 Python
Python3爬虫关于代理池的维护详解
Jul 30 Python
Python如何读写CSV文件
Aug 13 Python
如何从csv文件构建Tensorflow的数据集
Sep 21 Python
scrapy处理python爬虫调度详解
Nov 23 Python
python某漫画app逆向
Mar 31 Python
Python如何配置环境变量详解
May 18 Python
 python中的元类metaclass详情
May 30 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实现今天是星期几的几种写法
2013/09/26 PHP
php中json_encode UTF-8中文乱码的更好解决方法
2014/09/28 PHP
PHP+mysql防止SQL注入的方法小结
2019/04/27 PHP
ExtJS 2.2.1的grid控件在ie6中的显示问题
2009/05/04 Javascript
初窥JQuery(二)事件机制(2)
2010/12/06 Javascript
javascript面向对象之二 命名空间
2011/02/08 Javascript
checkbox使用示例
2013/08/23 Javascript
用js判断输入是否为中文的函数
2014/03/10 Javascript
js控制容器隐藏出现防止样式变化的两种方法
2014/04/25 Javascript
jQuery制作简洁的多级联动Select下拉框
2014/12/23 Javascript
js面向对象之常见创建对象的几种方式(工厂模式、构造函数模式、原型模式)
2015/11/09 Javascript
Javascript中的对象和原型(二)
2016/08/12 Javascript
JavaScript 继承详解(六)
2016/10/11 Javascript
浅谈jQuery绑定事件会叠加的解决方法和心得总结
2016/10/26 Javascript
JavaScript中在光标处插入添加文本标签节点的详细方法
2017/03/22 Javascript
基于angular-utils-ui-breadcrumbs使用心得(分享)
2017/11/03 Javascript
Javascript将图片的绝对路径转换为base64编码的方法
2018/01/11 Javascript
微信小程序缓存过期时间的使用详情
2019/05/12 Javascript
解决Vue项目中tff报错的问题
2020/10/21 Javascript
[02:20]DOTA2英雄基础教程 黑暗贤者
2013/12/19 DOTA
Python编程django实现同一个ip十分钟内只能注册一次
2017/11/03 Python
pygame游戏之旅 添加游戏界面按键图形
2018/11/20 Python
Python3爬虫学习之将爬取的信息保存到本地的方法详解
2018/12/12 Python
解决Pycharm界面的子窗口不见了的问题
2019/01/17 Python
纯CSS3实现圆角效果(含IE兼容解决方法)
2014/05/07 HTML / CSS
使用CSS3设计地图上的雷达定位提示效果
2016/04/05 HTML / CSS
BISSELL官网:北美吸尘器第一品牌
2019/03/14 全球购物
GafasWorld西班牙:购买太阳镜、眼镜和隐形眼镜
2019/09/08 全球购物
职业技术学校毕业生推荐信
2013/12/03 职场文书
体育活动总结
2015/02/04 职场文书
新教师个人工作总结
2015/02/06 职场文书
党员干部廉政承诺书
2015/04/28 职场文书
简爱读书笔记
2015/06/26 职场文书
2015年第31个教师节致辞
2015/07/31 职场文书
python分分钟绘制精美地图海报
2022/02/15 Python
在python中读取和写入CSV文件详情
2022/06/28 Python