多线程开发
创始人
2025-05-29 18:05:24

文章目录

        • 多线程开发
          • 1. Thread创建多线程
          • 2. ThreadPoolExecutor创建进程池
            • as_completed()
            • map()

多线程开发

  1. 一个进程中可以包含多个线程
  2. 线程也是一个运行行为,消耗计算机资源
  3. 一个进程中的所有线程共享这个进程的资源
  4. 多个线程之间的运行互不影响各自运行
  5. 线程的创建和销毁消耗资源远小于进程
  6. 各个线程也有自己的ID等特征
1. Thread创建多线程
import time
from threading import Threaddef count(x):time.sleep(x)start = time.time()jobs = []
for i in range(5):t = Thread(target=count, args=(i,))jobs.append(t)t.start()for i in jobs:i.join()print("用时:", time.time() - start)
2. ThreadPoolExecutor创建进程池
from concurrent.futures import ThreadPoolExecutor
import time# 构造线程池实例,传入max_workers可以设置线程池中最多能同时运行的线程数目
pool = ThreadPoolExecutor(max_workers=2)def task(i):print('线程名称:%s' % i)time.sleep(2)  # 定义睡眠时间for i in range(5):  # 创建十个任务# submit() 提交线程需要执行的任务(函数名和参数)到线程池中,立刻返回一个future对象。future1 = pool.submit(task, i)# 取task的执行结果print(future1.result())# 取消该 Future 代表的线程任务。如果该任务正在执行,不可取消,则该方法返回 False;否则,程序会取消该任务,并返回 True。print(future1.cancel())# 返回 Future 代表的线程任务是否被成功取消。print(future1.cancelled())print(future1.running())
as_completed()
from concurrent.futures import ThreadPoolExecutor, as_completed
import time
import random
import threading# 构造线程池实例,传入max_workers可以设置线程池中最多能同时运行的线程数目
pool = ThreadPoolExecutor(max_workers=2)# def task(i):
#     print('线程名称:%s' % i)
#     time.sleep(2)  # 定义睡眠时间def task(i):sleep_seconds = random.randint(1, 3)  # 随机睡眠时间print('线程名称:%s,参数:%s,睡眠时间:%s' % (threading.current_thread().name, i, sleep_seconds))time.sleep(sleep_seconds)  # 定义睡眠时间all_task = [pool.submit(task, i) for i in range(5)]for future in as_completed(all_task):data = future.result()print(data)
map()
from concurrent.futures import ThreadPoolExecutor, as_completed
import time
import random
import threading# 构造线程池实例,传入max_workers可以设置线程池中最多能同时运行的线程数目
pool = ThreadPoolExecutor(max_workers=2)# def task(i):
#     print('线程名称:%s' % i)
#     time.sleep(2)  # 定义睡眠时间def task(i):sleep_seconds = random.randint(1, 3)  # 随机睡眠时间print('线程名称:%s,参数:%s,睡眠时间:%s' % (threading.current_thread().name, i, sleep_seconds))time.sleep(sleep_seconds)  # 定义睡眠时间# 向线程池提交5个任务
x = range(5)
for i in pool.map(task, x):print('successful')

相关内容

热门资讯

Opentss代码测试 这是个多方门限签名库,使用rust实现。 代码包含两个功能,秘密共享密钥...
【id:14】【20分】C. ... 题目描述 编写一个函数比较两个字符串,参数是两个字符指针(要求显式定义...
无需公网IP,远程连接SQL ... 文章目录1.前言2.本地安装和设置SQL Server2.1 SQL Server下载2.2 SQL...
WuThreat身份安全云-T... 漏洞名称:CairoSVG 文件服务器端请求伪造 漏洞级别:严重 漏洞编号:CVE-2023-275...
Postgresql源码(10... 1 子事务控制语句分析 1.1 执行savepoint 执行函数: 【立即执行】→De...
python@日期和时间@da... 文章目录python datetimerelativedeltademo`timedelta...
数据库--进阶版-11--SQ... 1.插入数据 ·insert优化: 例如要插入下面这些 insert into tb_...
C语言—文件操作 为什么使用文件使用文件可以直接将数据存放到电脑硬盘上,做到数据的持久化什么是文件硬盘上...
【Zabbix_6.x 第三章... 文章目录👹 关于作者Zabbix 系列文章目录第三章 监控任意主机一、解决第二章登录...
python爬虫可以爬什么 Python爬虫可以爬取的东西有很多,Python爬虫怎么学?简单的分析...
组态王与200SMART之间无... 在实际的工业场合应用中,人机界面跟PLC配套使用是比较常见的现场“CP组合”ÿ...
KaiwuDB 荣获第三届 I... 3月17日,由中国某部电子化标准研究院、苏州金融科技协会、中国计算机用户协会指导&#x...
上海人工智能企业CIMCAI智... 上海人工智能企业CIMCAI智能港口自动化港口数字化码头智慧港航,成熟终端智慧港航人工...
红米note10 pro机型解... 前言。操作解除锁类案例只限于自己的机型, 因手机号长期不用或者忘记密码导致账号锁出现的...
9、Cascaded Diff... 简介 主页:https://cascaded-diffusion.github.io/...
异核通信框架(1)——SMP和... 0.前言         我是菜鸡,很久没有发表文章了。老样子,今天推荐...
Leetcode.2048 下... 题目链接 Leetcode.2048 下一个更大的数值平衡数 Rating : 17...
GBASE南大通用第二届校园大... 第二届校园大使在本周正式集结完毕啦! 全国一共有27所高校近50余名学生报名参加。 各...
Blender Apps?20... 2023 年对 Blender 来说将会是很有趣的一年,除了努力保持核心功能稳定和不断...
Python数据结构与算法(p... 学习材料清华大学博士讲解Python数据结构与算法 B站:https://www.bi...
Docker安装使用Nacos Docker安装使用Nacos1 参考2 Nacos版本2.1 访问地址3 Docker部署Naco...
Spring Boot 接口统... 需求 需求如题,想给一个 spring boot 项目的所有请求路径添加统一前缀&#x...
Boeing MQ-28 Gh... Boeing MQ-28 Ghost Bat作为五代机忠诚僚机的开山之作,今天我们来一...
线性动态规划问题 文章目录1. 三角形中最小路径之和2. 最长递增子序列3. 最长公共子序列 1. 三角形中最小路径之...
携手共赢!菊风荣获三基同创“2... 近年来智能手表市场发展势头迅猛,为满足用户多样化的应用场景,对于音视频能...
CentOS8提高篇3:Cen... 1. 准备工作(需要配置epel, rpmfusion源); 配置e...
计算机组成原理(7)--哈工大 程序中断方式中断的概念I/O中断的产生CPU和打印机部分并行工作程序中断方式的接口电路配置中断请求触...
Amazon S3 客户端:T... TntDrive 是适用于 Windows 的新 Amazon S3 客户端。使用 TntDrive...
java8 jdk1.8在wi... 一、软件下载 1、从网盘获取 java8安装包 2、或者从官网获取(需要提前注册ora...
【 Deep-Shallow ... A Deep-Shallow Fusion Network with Multi-Detail Ex...