Python多线程正确用法实例解析

小石头
小石头
发布时间:2026-10-13| 5人浏览过
原创

本文详细解析Python中threading模块的使用,重点介绍Thread类的target、args及kwargs参数配置。通过抓取天气数据的实例,演示如何创建线程列表、启动子线程以及利用join方法实现主线程与子线程的同步,确保程序逻辑完整执行。

Python多线程基础与Thread类参数

在Python标准库中,threading模块提供了一个核心函数用于处理多线程任务。

该函数的基本语法为:threading.Thread(target=function, args=(), kwargs={})。

其中,target参数用于指定开发者自定义的线程执行函数。

args参数用于向线程函数传递位置参数,其数据类型必须为元组(tuple)。

kwargs参数为可选配置,用于传递关键字参数,数据类型需为字典(dict)。

实例化threading.Thread后,系统会创建一个新的线程对象。此时,target参数决定了该线程运行的具体函数,而args和kwargs则提供了该函数执行所需的参数。

这一机制确保了线程能够携带特定数据执行预定义的业务逻辑。

多线程实战:线程创建与同步控制

为了演示这一过程,我们将前文提到的数据抓取逻辑封装到一个独立的函数中。


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方法以实现数据同步。当主线程执行到此处时,会暂停自身运行,直到所有子线程执行完毕。

若省略join步骤,主线程将不会等待子线程完成,而是直接执行完剩余代码后结束程序,可能导致结果未完全输出。


for i in files:
  threads[i].join()

以上内容涵盖了Python多线程创建与同步的核心要点,希望能为读者的学习提供实用参考,欢迎继续支持本站获取更多技术分享。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。