Python 线程池 (thread pool) 创建及使用 + 实例代码

这篇具有很好参考价值的文章主要介绍了Python 线程池 (thread pool) 创建及使用 + 实例代码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

首先线程和线程池不管在哪个语言里面,理论都是通用的。对于开发来说,解决高并发问题离不开对多个线程处理。我们先从线程到线程池,从每个线程的运行到多个线程并行,再到线程池管理。由浅入深的理解如何在实际开发中,使用线程池来提高处理线程的效率。

一、线程

1.线程介绍

线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。在 Unix System V 及 Sun 中也被称为轻量进程(lightweight processes),但轻量进程更多指内核线程(kernel thread),而把用户线程(user thread)称为线程。

线程是独立调度和分派的基本单位。线程可以为操作系统内核调度的内核线程,如 Win32 线程;由用户进程自行调度的用户线程,如 Linux 平台的 POSIX Thread;或者由内核与用户进程,如 Windows 10 的线程,进行混合调度。

​ 同一进程中的多条线程将共享该进程中的全部系统资源,如虚拟地址空间,文件描述符和信号处理等等。但同一进程中的多个线程有各自的调用栈(call stack),自己的寄存器环境(register context),自己的线程本地存储(thread-local storage)。

​ 一个进程可以有很多线程,每条线程并行执行不同的任务。

2.线程特性

1)轻型实体

线程中的实体基本上不拥有系统资源,只是有一点必不可少的、能保证独立运行的资源。

线程的实体包括程序、数据和 TCB。线程是动态概念,它的动态特性由线程控制块 TCB(Thread Control Block)描述。TCB 包括以下信息:

(1)线程状态。

(2)当线程不运行时,被保存的现场资源。

(3)一组执行堆栈。

(4)存放每个线程的局部变量主存区。

(5)访问同一个进程中的主存和其它资源。

用于指示被执行指令序列的、保留局部变量,少数状态参数和返回地址等的一组寄存器和堆栈。

2)独立调度和分派的基本单位

在多线程 OS 中,线程是能独立运行的基本单位,因而也是独立调度和分派的基本单位。由于线程很“轻”,故线程的切换非常迅速且开销小(在同一进程中的)。

3)可并发执行

在一个进程中的多个线程之间,可以并发执行,甚至允许在一个进程中所有线程都能并发执行;同样,不同进程中的线程也能并发执行,充分利用和发挥了处理机与外围设备并行工作的能力。文章来源地址https://www.toymoban.com/news/detail-453342.html

4)共享进程资源

到了这里,关于Python 线程池 (thread pool) 创建及使用 + 实例代码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JavaEE之多线程编程:2.创建线程及Thread类常见方法(超全!!!)

    Java中创建线程的写法有很多种!!!这里介绍其中5种。 方法1:继承Thread类,重写run 创建一个类,让这个类继承自Thread父类,再重写我们的run方法就可以了。 使用Thread类,不需要import别的包,因为它是再Java.lang下面的。 注意: start() 是创建了一个新的线程,由新的线程来执

    2024年02月04日
    浏览(29)
  • Qt+C++多线程thread-QThread-QTimer视频-控件动画-混合应用实例

    程序示例精选 Qt+C++多线程thread-QThread-QTimer混合应用实例 如需安装运行环境或远程调试,见文章底部个人 QQ 名片,由专业技术人员远程协助! 这篇博客针对Qt+C++多线程thread-QThread-QTimer混合应用实例编写代码,代码整洁,规则,易读。 学习与应用推荐首选。 功能:多线程thr

    2024年02月16日
    浏览(35)
  • 【STM32&RT-Thread零基础入门】 5. 线程创建应用(线程创建、删除、初始化、脱离、启动、睡眠)

    硬件:STM32F103ZET6、ST-LINK、usb转串口工具、4个LED灯、1个蜂鸣器、4个1k电阻、2个按键、面包板、杜邦线 本章主要讲线程的工作机制和管理方法,通过实例讲解如何使用多线程完成多任务开发。 RT-Thread用线程控制块来描述和管理一个线程,一个线程对应一个线程控制块。线程控

    2024年02月12日
    浏览(43)
  • 【STM32&RT-Thread零基础入门】 7. 线程创建应用(多线程运行机制)

    硬件:STM32F103ZET6、ST-LINK、usb转串口工具、4个LED灯、1个蜂鸣器、4个1k电阻、2个按键、面包板、杜邦线 本章进一步研究多线程的运行机制。要求实现功能如下:创建2个线程,线程名称分别为LED和BEEP。两个线程的任务是连续5次打印本线程的名字后退出线程(注意:线程不执行

    2024年02月03日
    浏览(27)
  • 【STM32&RT-Thread零基础入门】 6. 线程创建应用(线程挂起与恢复)

    硬件:STM32F103ZET6、ST-LINK、usb转串口工具、4个LED灯、1个蜂鸣器、4个1k电阻、2个按键、面包板、杜邦线 在上一个任务中,通过停止命令把线程删除后,线程在系统中就不存在了,也无法再使线程重新运行。例如输入stop_led_thread命令后,led停止闪烁,但也无法重新开启LED灯闪烁

    2024年02月11日
    浏览(25)
  • Python多线程之_thread与threading模块

    Python多线程之_thread与threading模块 在Python程序中,多线程的应用程序会创建一个函数,来执行需要重复执行多次的程序代码,然后创建一个线程执行该函数。一个线程是一个应用程序单元,用于在后台并行执行多个耗时的动作。 在多线程的应用程序中,每一个线程的执行时间

    2024年02月04日
    浏览(31)
  • Python线程(thread)

    Python实用教程_spiritx的博客-CSDN博客 在Python3中,通过threading模块提供线程的功能。原来的thread模块已废弃。但是threading模块中有个Thread类(大写的T,类名),是模块中最主要的线程类,一定要分清楚了,千万不要搞混了。 threading模块提供了一些比较实用的方法或者属性,例

    2024年02月09日
    浏览(33)
  • 【python | Thread】多线程记录

    every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?type=blog python 多线程记录 说明: 由于GIL锁的存,并非真正意义上的多线程 说明: 重写Thread类里面的run方法 ,里面写入你需要执行的代码,之后使用start()方法就可以调用run [1] https://zhuanlan.zhihu.com/p/91601

    2024年02月03日
    浏览(34)
  • python 创建和使用线程池

    众所周知,python3多线程有threading,很好的支持了多线程,那么问题来了,为什么还需要线程池呢,其实很好回答,如果你要爬取网站有八百页,每页设置一个线程,难道能开启八百个么,光切换的时间也很高了吧。这时候就需要用到线程池,可以设置一个20的线程池,同时只

    2024年02月15日
    浏览(29)
  • 使用Apache Commons Pool2创建Java对象池

    在Java应用程序中,频繁地创建和销毁对象会消耗大量的内存和CPU资源,影响应用程序的性能和可伸缩性。为了解决这个问题,我们可以使用对象池技术,将对象存储在池中,在需要的时候从池中获取,使用完毕后将对象归还到池中。Apache Commons Pool2是一个流行的开源对象池实

    2023年04月08日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包