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 相关文章推荐
使用celery执行Django串行异步任务的方法步骤
Jun 06 Python
python操作cfg配置文件方式
Dec 22 Python
python使用正则表达式去除中文文本多余空格,保留英文之间空格方法详解
Feb 11 Python
windows、linux下打包Python3程序详细方法
Mar 17 Python
150行Python代码实现带界面的数独游戏
Apr 04 Python
实现ECharts双Y轴左右刻度线一致的例子
May 16 Python
Python json解析库jsonpath原理及使用示例
Nov 25 Python
最新PyCharm 2020.2.3永久激活码(亲测有效)
Nov 26 Python
PyTorch中的拷贝与就地操作详解
Dec 09 Python
python3.9和pycharm的安装教程并创建简单项目的步骤
Feb 03 Python
pytorch损失反向传播后梯度为none的问题
May 12 Python
django学习之ajax post传参的2种格式实例
May 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实现图片简单上传
2006/10/09 PHP
PHP 飞信好友免费短信API接口开源版
2010/07/22 PHP
PHP array_multisort()函数的使用札记
2011/07/03 PHP
PHP写API输出的时用echo的原因详解
2019/04/28 PHP
thinkPHP5.1框架路由::get、post请求简单用法示例
2019/05/06 PHP
零基础学JavaScript最新动画教程+iso光盘下载
2008/01/22 Javascript
javascript 弹出层组件(升级版)
2011/05/12 Javascript
使用jQuery操作Cookies的实现代码
2011/10/09 Javascript
JS 实现BASE64_ENCODE和BASE64_DECODE(实例代码)
2013/11/13 Javascript
用Jquery.load载入页面后样式没了页面混乱的解决方法
2014/10/20 Javascript
怎么限制input的text里输入的值只能是数字(正则、js)
2016/05/16 Javascript
Bootstrap免费字体和图标网站(值得收藏)
2017/03/16 Javascript
iview table高度动态设置方法
2018/03/14 Javascript
JS实现关键词高亮显示正则匹配
2018/06/22 Javascript
详解webpack loader和plugin编写
2018/10/12 Javascript
vue router总结 $router和$route及router与 router与route区别
2019/07/05 Javascript
谈谈IntersectionObserver懒加载的具体使用
2019/10/15 Javascript
[01:24:16]2018DOTA2亚洲邀请赛 4.6 全明星赛
2018/04/10 DOTA
centos下更新Python版本的步骤
2013/02/12 Python
python网络编程示例(客户端与服务端)
2014/04/24 Python
python中闭包Closure函数作为返回值的方法示例
2017/12/17 Python
python机器学习实战之树回归详解
2017/12/20 Python
python MysqlDb模块安装及其使用详解
2018/02/23 Python
python 判断矩阵中每行非零个数的方法
2019/01/26 Python
学python安装的软件总结
2019/10/12 Python
tensorflow获取预训练模型某层参数并赋值到当前网络指定层方式
2020/01/24 Python
Tensorflow 实现释放内存
2020/02/03 Python
Python 如何定义匿名或内联函数
2020/08/01 Python
如何使用PHP session
2015/04/21 面试题
中专药剂专业应届毕的自我评价
2013/12/27 职场文书
关于责任的演讲稿
2014/05/20 职场文书
运动会搞笑广播稿
2014/10/14 职场文书
2015年学校关工委工作总结
2015/04/03 职场文书
实习报告范文
2019/07/30 职场文书
ajax请求前端跨域问题原因及解决方案
2021/10/16 Javascript
Python可视化学习之seaborn绘制矩阵图详解
2022/02/24 Python