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绘制MySQL数据图实现数据可视化
Mar 30 Python
Python使用正则匹配实现抓图代码分享
Apr 02 Python
举例讲解Python中装饰器的用法
Apr 27 Python
Python中文字符串截取问题
Jun 15 Python
解读python logging模块的使用方法
Apr 17 Python
在Django中实现添加user到group并查看
Nov 18 Python
Pandas实现dataframe和np.array的相互转换
Nov 30 Python
PyTorch中的padding(边缘填充)操作方式
Jan 03 Python
python实现QQ邮箱发送邮件
Mar 06 Python
Python 线性回归分析以及评价指标详解
Apr 02 Python
Django自定义列表 models字段显示方式
Apr 03 Python
基于Python实现nc批量转tif格式
Aug 14 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代码审计比较有意思的例子
2014/05/07 PHP
php 购物车完整实现代码
2014/06/05 PHP
php实现读取手机客户端浏览器的类
2015/01/09 PHP
PHP判断来访是搜索引擎蜘蛛还是普通用户的代码小结
2015/09/14 PHP
PHP7新增运算符用法实例分析
2016/09/26 PHP
jQuery学习3:操作元素属性和特性
2010/02/07 Javascript
Javascript 面向对象 重载
2010/05/13 Javascript
JS 树形递归实例代码
2010/05/18 Javascript
使用JavaScript检测Firefox浏览器是否启用了Firebug的代码
2010/12/28 Javascript
jquery.cookie.js 操作cookie实现记住密码功能的实现代码
2011/04/27 Javascript
登陆成功后自动计算秒数执行跳转
2014/01/23 Javascript
手写的一个兼容各种浏览器的javascript getStyle函数(获取元素的样式)
2014/06/06 Javascript
jQuery中nextAll()方法用法实例
2015/01/07 Javascript
js文字横向滚动特效
2015/11/11 Javascript
location.hash保存页面状态的技巧
2016/04/28 Javascript
jQuery代码实现图片墙自动+手动淡入淡出切换效果
2016/05/09 Javascript
jQuery根据ID、CLASS、等获取对象的实例
2016/12/04 Javascript
AngularJS封装指令方法详解
2016/12/12 Javascript
原生javascript上传图片带进度条【实例分享】
2017/04/06 Javascript
canvas实现弧形可拖动进度条效果
2017/05/11 Javascript
Nodejs进阶之服务端字符编解码和乱码处理
2017/09/04 NodeJs
Angular(5.2->6.1)升级小结
2018/12/27 Javascript
python网络编程之数据传输UDP实例分析
2015/05/20 Python
在Python中操作时间之strptime()方法的使用
2020/12/30 Python
Python基于smtplib实现异步发送邮件服务
2015/05/28 Python
Python随机生成带特殊字符的密码
2016/03/02 Python
Python实现调度算法代码详解
2017/12/01 Python
通过python+selenium3实现浏览器刷简书文章阅读量
2017/12/26 Python
Python简单实现查找一个字符串中最长不重复子串的方法
2018/03/26 Python
Django Admin实现三级联动的示例代码(省市区)
2018/06/22 Python
Python 抓取微信公众号账号信息的方法
2019/06/14 Python
CSS3属性使网站设计增强同时不消弱可用性
2009/08/29 HTML / CSS
党支部书记四风问题整改措施
2014/09/24 职场文书
社保转移委托书范本
2014/10/08 职场文书
Go语言基础函数基本用法及示例详解
2021/11/17 Golang
vue生命周期钩子函数以及触发时机
2022/04/26 Vue.js