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的多维空数组赋值方法
Apr 13 Python
django中模板的html自动转意方法
May 27 Python
浅谈Python traceback的优雅处理
Aug 31 Python
实例分析python3实现并发访问水平切分表
Sep 29 Python
Python调用C++,通过Pybind11制作Python接口
Oct 16 Python
python取余运算符知识点详解
Jun 27 Python
详解Python list和numpy array的存储和读取方法
Nov 06 Python
python实现两个一维列表合并成一个二维列表
Dec 02 Python
python groupby 函数 as_index详解
Dec 16 Python
2021年的Python 时间轴和即将推出的功能详解
Jul 27 Python
Python内置函数及功能简介汇总
Oct 13 Python
Python 多线程处理任务实例
Nov 07 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获取字符串中各个字符出现次数的方法
2015/02/23 PHP
调试WordPress中定时任务的相关PHP脚本示例
2015/12/10 PHP
PHP MVC框架中类的自动加载机制实例分析
2019/09/18 PHP
可实现多表单提交的javascript函数
2007/08/01 Javascript
用js查找法实现当前栏目的高亮显示的代码
2007/11/24 Javascript
一个js的tab切换效果代码[代码分离]
2010/04/11 Javascript
jQuery EasyUI 中文API Layout(Tabs)
2010/04/27 Javascript
jQuery EasyUI API 中文文档 - Panel面板
2011/09/30 Javascript
枚举的实现求得1-1000所有出现1的数字并计算出现1的个数
2013/09/10 Javascript
js实现网页倒计时、网站已运行时间功能的代码3例
2014/04/14 Javascript
JS中生成随机数的用法及相关函数
2016/01/09 Javascript
基于jQuery实现瀑布流页面
2017/04/11 jQuery
Node.js  事件循环详解及实例
2017/08/06 Javascript
JavaScript中运算符规则和隐式类型转换示例详解
2017/09/06 Javascript
利用10行js代码实现上下滚动公告效果
2017/12/08 Javascript
开发Vue树形组件的示例代码
2017/12/21 Javascript
js 公式编辑器 - 自定义匹配规则 - 带提示下拉框 - 动态获取光标像素坐标
2018/01/04 Javascript
JS把字符串格式的时间转换成几秒前、几分钟前、几小时前、几天前等格式
2019/07/10 Javascript
[45:16]完美世界DOTA2联赛循环赛 IO vs FTD BO2第二场 11.05
2020/11/06 DOTA
python将.ppm格式图片转换成.jpg格式文件的方法
2018/10/27 Python
python opencv minAreaRect 生成最小外接矩形的方法
2019/07/01 Python
Django框架模型简单介绍与使用分析
2019/07/18 Python
python requests抓取one推送文字和图片代码实例
2019/11/04 Python
Python实现变声器功能(萝莉音御姐音)
2019/12/05 Python
Python: 传递列表副本方式
2019/12/19 Python
Python3基本输入与输出操作实例分析
2020/02/14 Python
浅析HTML5中的download属性使用
2019/03/13 HTML / CSS
香港优质食材和美酒专门店:FoodWise
2017/09/01 全球购物
Oracle性能调优原则
2012/05/03 面试题
幼儿园父亲节活动总结
2015/02/12 职场文书
2015年初中生自我评价范文
2015/03/03 职场文书
学习杨善洲同志先进事迹心得体会
2016/01/23 职场文书
初中思品教学反思
2016/02/20 职场文书
警用民用对讲机找不同
2022/02/18 无线电
Golang流模式之grpc的四种数据流
2022/04/13 Golang