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采用raw_input读取输入值的方法
Aug 18 Python
python实现对指定输入的字符串逆序输出的6种方法
Apr 26 Python
浅谈Python 列表字典赋值的陷阱
Jan 20 Python
Django中create和save方法的不同
Aug 13 Python
一行Python代码制作动态二维码的实现
Sep 09 Python
python实现指定ip端口扫描方式
Dec 17 Python
Django实现将一个字典传到前端显示出来
Apr 03 Python
Python基于DB-API操作MySQL数据库过程解析
Apr 23 Python
Python发送邮件封装实现过程详解
May 09 Python
Django 解决新建表删除后无法重新创建等问题
May 21 Python
在keras中实现查看其训练loss值
Jun 16 Python
 分享一个Python 遇到数据库超好用的模块
Apr 06 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 similar_text 字符串的相似性比较函数
2010/05/26 PHP
php的mail函数发送UTF-8编码中文邮件时标题乱码的解决办法
2015/10/20 PHP
php基于单例模式封装mysql类完整实例
2016/10/18 PHP
JavaScript入门教程 Cookies
2009/01/31 Javascript
为jQuery增加join方法的实现代码
2010/11/28 Javascript
解析offsetHeight,clientHeight,scrollHeight之间的区别
2013/11/20 Javascript
jQuery修改class属性和CSS样式整理
2015/01/30 Javascript
Nodejs关于gzip/deflate压缩详解
2015/03/04 NodeJs
jQuery控制Div拖拽效果完整实例分析
2015/04/15 Javascript
把json格式的字符串转换成javascript对象或数组的方法总结
2016/11/03 Javascript
实例解析angularjs的filter过滤器
2016/12/14 Javascript
js根据需要计算数组中重复出现某个元素的个数
2019/01/18 Javascript
Vue2.0+Vux搭建一个完整的移动webApp项目的示例
2019/03/19 Javascript
《javascript设计模式》学习笔记七:Javascript面向对象程序设计组合模式详解
2020/04/08 Javascript
js删除指定位置超链接中含有百度与360的标题
2021/01/06 Javascript
[13:38]2015国际邀请赛中国战队出征仪式
2015/05/29 DOTA
[01:07:15]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第二场 1月25日
2021/03/11 DOTA
Python正则表达式经典入门教程
2017/05/22 Python
python 全局变量的import机制介绍
2017/09/07 Python
python实现定时提取实时日志程序
2018/06/22 Python
python对list中的每个元素进行某种操作的方法
2018/06/29 Python
两个元祖T1=('a', 'b'),T2=('c', 'd')使用匿名函数将其转变成[{'a': 'c'},{'b': 'd'}]的几种方法
2019/03/05 Python
python2.7 安装pip的方法步骤(管用)
2019/05/05 Python
Python Numpy计算各类距离的方法
2019/07/05 Python
如何爬取通过ajax加载数据的网站
2019/08/15 Python
Python对接 xray 和微信实现自动告警
2019/09/17 Python
如何基于python操作json文件获取内容
2019/12/24 Python
Python 字节流,字符串,十六进制相互转换实例(binascii,bytes)
2020/05/11 Python
eBay澳大利亚站:eBay.com.au
2018/02/02 全球购物
旅游管理毕业生自荐信范文
2014/03/19 职场文书
群众路线个人整改措施
2014/10/24 职场文书
公务员个人考察材料
2014/12/23 职场文书
2015年青年志愿者协会工作总结
2015/04/27 职场文书
喜迎建国70周年:有关爱国的名言名句
2019/09/24 职场文书
mysql中如何用命令创建联合唯一索引
2022/04/20 MySQL
Vue2项目中对百度地图的封装使用详解
2022/06/16 Vue.js