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中的type()方法的使用
May 21 Python
Windows上配置Emacs来开发Python及用Python扩展Emacs
Nov 20 Python
python实现发送和获取手机短信验证码
Jan 15 Python
Python类的动态修改的实例方法
Mar 24 Python
对python list 遍历删除的正确方法详解
Jun 29 Python
pycharm中使用anaconda部署python环境的方法步骤
Dec 19 Python
python爬虫之urllib,伪装,超时设置,异常处理的方法
Dec 19 Python
python连接打印机实现打印文档、图片、pdf文件等功能
Feb 07 Python
使用 pytorch 创建神经网络拟合sin函数的实现
Feb 24 Python
Python3批量创建Crowd用户并分配组
May 20 Python
pycharm实现print输出保存到txt文件
Jun 01 Python
VSCODE配置Markdown及Markdown基础语法详解
Jan 19 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
PJBlog插件 防刷新的在线播放器
2006/10/25 Javascript
jquery 指南/入门基础
2007/11/30 Javascript
Javascript 读后台cookie代码
2008/09/15 Javascript
仅用[]()+!等符号就足以实现几乎任意Javascript代码
2010/03/01 Javascript
Javascript中Eval函数的使用
2010/03/23 Javascript
js中 javascript:void(0) 用法详解
2015/08/11 Javascript
JS中setTimeout的巧妙用法前端函数节流
2016/03/24 Javascript
快速使用Bootstrap搭建传送带
2016/05/06 Javascript
jQuery插件pagination实现无刷新分页
2016/05/21 Javascript
jQuery无刷新上传之uploadify3.1简单使用
2016/06/18 Javascript
利用Angularjs和原生JS分别实现动态效果的输入框
2016/09/01 Javascript
JS瀑布流实现方法实例分析
2016/12/19 Javascript
搭建简单的nodejs http服务器详解
2017/03/09 NodeJs
JavaScript用二分法查找数据的实例代码
2017/06/17 Javascript
详解如何实现一个简单的 vuex
2018/02/10 Javascript
JQuery通过后台获取数据遍历到前台的方法
2018/08/13 jQuery
JS使用canvas中的measureText方法测量字体宽度示例
2019/02/02 Javascript
微信小程序自定义导航栏实例代码
2019/04/05 Javascript
layui-tree实现Ajax异步请求后动态添加节点的方法
2019/09/23 Javascript
js消除图片小游戏代码
2019/12/11 Javascript
python调用百度语音识别api
2018/08/30 Python
Python os.access()用法实例
2019/02/18 Python
Pyqt5如何让QMessageBox按钮显示中文示例代码
2019/04/11 Python
使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件及出现问题解决方法
2019/09/06 Python
Python调用shell cmd方法代码示例解析
2020/06/18 Python
python自动化测试三部曲之request+django实现接口测试
2020/10/07 Python
浅谈Python __init__.py的作用
2020/10/28 Python
Python就将所有的英文单词首字母变成大写
2021/02/12 Python
2014年健康教育实施方案
2014/02/17 职场文书
供货协议书
2014/04/22 职场文书
优秀毕业生的求职信
2014/07/21 职场文书
2014年化验室工作总结
2014/11/21 职场文书
人民调解协议书
2016/03/21 职场文书
Nginx工作原理和优化总结。
2021/04/02 Servers
分析SQL窗口函数之排名窗口函数
2022/04/21 Oracle
CSS实现鼠标悬浮动画特效
2023/05/07 HTML / CSS