python3多线程、多进程之concurrent.futures模块

人工势场法在自动驾驶避障中的实践与优化 本文深入探讨了人工势场法在自动驾驶避障中的核心原理与实践优化。通过解析引力与斥力模型,揭示了经典算法在局部最优和目标不可达等问题上的局限性,并重点介绍了改进斥力场函数、引入道路边界斥力及动态参数调整等关键优化策略,有效提升了该局部路径规划算法在复杂动态场景下的实用性与鲁棒性。 阅读详情

1,感受

  • 自打我用上了concurrent.futures模块,我就深深爱上了它,真是爱不释手(现在我每写一些python模块,都会考虑使用futures加快代码的执行速度。)
  • 为啥?因为concurrent.futures好用又简单。

2,如何使用

  • 网上也有许多资料解释如何使用该模块,但是确实存在很多坑,毕竟大部分都不是专家级别的,写写博客可能就是日常的笔记而已。。。但是,要是新手看到了,并且按照网友们写的一步一步执行,有时候你就会跌入万丈深渊,我就是受害者之一0.0(em…不排除我写的一些文章也有大坑。。惭愧惭愧0.0)。

  • 所以每次接触一个新API的时候,最好先看看官网的解释,这样入坑的可能性会降低很多。所以python3的concurrent.futures模块中文API链接如下:

    https://docs.python.org/zh-cn/3/library/concurrent.futures.html
    

3,我习惯的用法

以下相关代码参考子、自API,分为异步调用和同步调用,那什么时候用异步调用,什么时候用同步调用呢?结合我自身的工程实践,给出我的理解:

  • 通常情况下会用异步调用,毕竟速度快,但是我认为条件是,数据规模不是很大,而且并行任务的入队速度和出队速度相差不多的情况下,用异步调用很方便,速度也很快。(解决数据规模大的问题,有很多方法,其中之一是:可以将待处理的大规模数据分块,以分批并行处理)。
  • 如果待处理的数据规模超大,也没分块,同时并行任务的入队速度远高于出队速度,那么会出现内存不断增加直至溢出的情况,这样很危险的,会导致服务器崩了。。。。这时候可以考虑同步调用
  • 同步调用速度相对慢很多,但是有些情况下可以解决内存溢出的问题。比如并行任务入队操作是从本地文件读取数据,出队操作是对该部分数据进行特别耗时的处理,这样就可能出现内存溢出。

3.1 异步调用

import concurrent.futures
import urllib.request

URLS = ['http://www.foxnews.com/',
        'http://www.cnn.com/',
        'http://europe.wsj.com/',
        'http://www.bbc.co.uk/',
        'http://some-made-up-domain.com/']

# Retrieve a single page and report the URL and contents
def load_url(url, timeout):
    with urllib.request.urlopen(url, timeout=timeout) as conn:
        return conn.read()

# We can use a with statement to ensure threads are cleaned up promptly
with concurrent.futures.ThreadPoolExecutor(max_workers=5) as executor:
    # Start the load operations and mark each future with its URL
    future_to_url = {executor.submit(load_url, url, 60): url for url in URLS}
    for future in concurrent.futures.as_completed(future_to_url):
        url = future_to_url[future]
        try:
            data = future.result()
        except Exception as exc:
            print('%r generated an exception: %s' % (url, exc))
        else:
            print('%r page is %d bytes' % (url, len(data)))

3.2 同步调用

利用future.result()实现同步调用,示例代码如下:

import concurrent.futures
import urllib.request

URLS = ['http://www.foxnews.com/',
        'http://www.cnn.com/',
        'http://europe.wsj.com/',
        'http://www.bbc.co.uk/',
        'http://some-made-up-domain.com/']

# Retrieve a single page and report the URL and contents
def load_url(url, timeout):
    with urllib.request.urlopen(url, timeout=timeout) as conn:
        return conn.read()

# We can use a with statement to ensure threads are cleaned up promptly
with concurrent.futures.ThreadPoolExecutor(max_workers=5) as executor:
    # Start the load operations and mark each future with its URL
    for url in URLS:
    	re = executor.submit(load_url, url, 60).result()

微信扫码关注:挑灯看剑王知事
在这里插入图片描述

uniapp [安卓苹果App端] - 实现判断并开启消息通知/提示权限,监测通知权限未开启时弹框提示用户并引导用户跳转至设置界面,uniApp检查通知权限+提示是否打开+点击跳转设置(详细示例代码) uni-app判断有无通知权限,并进行设置,设置手机通知权限,开启通知权限,uni-app解决权限问题,uniapp 拉起授权(拒绝后重新开启权限)uniApp打包的手机app如果用户没开启通知权限、引导用户开启,uni-app动态打开应用通知权限,拒绝后跳转设置页面,uniapp获取通知栏权限,苹果ios系统打开通知权限,被拒绝怎么办,uniapp安卓判断通知权限,uniapp打包的APP引导用户打开手机通知权限,uniapp权限被拒绝,跳转手机设置页面 权限设置,IOS应用内跳转系统设置,uni-app 阅读详情

相关推荐

YOLOv8使用设备摄像头实时监测

YOLOv8使用设备摄像头实时监测

Joining667的博客 4187

python 多线程/多进程 concurrent.futures/threading/multiprocessing

CPython 解释器所采用的一种机制,它确保同一时刻只有一个线程在执行 Python bytecode。给整个解释器加锁使得解释器多线程运行更方便,其代价则是牺牲了在多处理器上的并行性。可通过concurrent.futures中的ThreadPoolExecutor、 ProcessPoolExecutor分别实现多线程、多进程并行任务。提供了一种方便的方法,可以跨多个输入值并行化函数的执行,跨进程分配输入数据(数据并行),而 threading 模块中没有类似物的API。

驽马十驾,功在不舍;锲而不舍,金石可镂。 1417

[原创]Step by step 实现自己的AI知识库问答(二)

对小白很友好的AI智能问答开发保姆级教程,适合初级开发者、学生阅读参考,无限制分享,欢迎转载。在这个章节中,我们使用了百度千帆作为知识库,通过简单的代码调用API实现了智能问答。

BaiRiYiSanJin的博客 1469

python3线程池 多线程

从Python3.2开始,标准库为我们提供了 concurrent.futures 模块,它提供了 ThreadPoolExecutor (线程池)和ProcessPoolExecutor (进程池)两个类。 相比 threading 等模块,该模块通过 submit 返回的是一个 future 对象,它是一个未来可期的对象,通过它可以获悉线程的状态主线程(或进程)中可以获取某一个线程(进程)执行的状态或者某一个任务执行的状态及返回值: 主线程可以获取某一个线程(或者任务的)的状态,以及返回值。 当一

qq_27886997的博客 1563

华为防火墙双线路配置实战:5分钟搞定主备自动切换(含健康检查避坑指南)

本文详细介绍了华为防火墙双线路配置实战,包括主备自动切换和健康检查机制的优化技巧。通过智能健康检查机制,华为防火墙能实现毫秒级故障自动切换,确保网络高可用性。文章提供了从架构设计到实战配置的全流程指南,并分享了常见配置误区与解决方案,帮助中小企业快速搭建稳定可靠的网络架构。

weixin_30872337的博客 604

nvidia系列教程-AGX-Orin linux源码下载编译

NVIDIA AGX Orin 是一款高性能的嵌入式计算平台,广泛应用于人工智能、自动驾驶、机器人等领域。为 AGX Orin 编译定制的 Linux 内核,可以更好地适应特定应用需求,增强系统的灵活性。本文将详细介绍如何下载、配置和编译适用于 AGX Orin 的 Linux 内核源码。本文介绍了如何为 NVIDIA AGX Orin 平台下载、配置和编译定制的 Linux 内核源码。通过编译和部署定制内核,您可以更好地控制系统的行为,并根据特定应用需求进行优化。

flypig has a dream! 1281

python3 - concurrent.futures模块 - 进程池&线程池

目录 一、概念总结 1-1 池:控制进程数或线程数的概念。 1-2 同步&异步调用:提交任务的两种方式 1-3 阻塞&非阻塞:程序的运行状态 二、concurrent.futures 模块实现‘池’ 2-0 concurrent.futures基本总结 2-0-1 基本方法(进程池和线程池都适用) 2-1 进程池 2-1-1 进程池的两种任务提交方式 2-1-2...

LIN的博客 4075

OAuth2.0集成SpringSecurity加JWT实现单点登录

单点登录(Single sign on),英文名称缩写SSO,SSO的意思就是在多系统的环境中,登录单方系统,就可以在不用再次登录的情况下访问相关受信任的系统。也就是说只要登录一次单体系统就可以

Nicky's blog 9026

Python 中的多线程和多进程 | 长文详解

本文深入探讨了 Python 中的多线程和多进程,以及它们如何与并发和并行相关联。介绍多线程和多进程是编程中最基本的两个概念之一。如果你已经编写了一段时间的代码,你应该已经遇到过一些情况,其中你想加快代码中某些部分的特定操作。Python支持各种机制,使各种任务可以(几乎)同时执行。在本教程中,我们将理解多线程和多进程,并看看这些技术如何在Python中实现。我们还将讨论根据应用程序是 I/O-b...

Warmer_Sweeter 1147

47、利用组策略配置 Windows 防火墙与 IPsec 全解析

本文深入解析了如何利用组策略配置Windows防火墙与IPsec,涵盖防火墙规则基础、IPsec身份验证与加密机制、服务器和域隔离实现方法、WFAS中新旧IPsec规则的区别与配置流程,并详细说明了防火墙属性与规则的优先级计算方式。同时介绍了证书服务、EFS等未详述的安全功能及相关学习资源,帮助管理员通过组策略有效提升网络安全性。

onion的博客 100

【YOLO11[基础]】分类任务的热力图可视化实践 | 论文必备 | 分类任务 | 即插即用 | 可选GradCAMPlusPlus, GradCAM, XGradCAM, EigenCAM, HiR

【YOLO11[基础]】分类任务的热力图可视化实践 | 论文必备 | 分类任务 | 即插即用 | 可选GradCAMPlusPlus, GradCAM, XGradCAM, EigenCAM, HiResCAM, LayerCAM, RandomCAM, EigenGradCAM等

静谧、淡雅 2389

python3多线程第三方库_Python3标准库:concurrent.futures管理并发任务池

PythonPython开发Python语言Python3标准库:concurrent.futures管理并发任务池 1.concurrent.futures管理并发任务池concurrent.futures模块提供了使用工作线程或进程池运行任务的接口。线程和进程池的API是一样的,所以应用只做最小的修改就可以在线程和进程之间顺利地切换。这个模块提供了两种类型的类与这些池交...

weixin_39606137的博客 450

2025华为od机试真题B卷【字符串计数匹配】Java&Go 实现

给你一个字符串str和整数k,返回满足以下条件的所有子字符串个数: 1.恰好包含k个字母。 2.数字0-9各出现至少一次。

MISAYAONE的博客 636

Python报错ModuleNotFoundError: No module named ‘concurrent‘

在测试Python的多线程时,根据官方的说法,concurrent.futures在Python3中已经内置了,不需要下载安装,如果是Python2则需要运行pip install futures进行安装。。。 这样导入,两种写法均可 import concurrent.futures # from concurrent import futures 但是,,,我是python3.7,竟然给我报出了下面的错误,我直接裂开 ModuleNotFoundError: No module named

KK_2018的技术博客_程序员不止是程序员 6951

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Python3并发编程之线程池/进程池--concurrent.futures模块

多线程应用编程中可能会使用到的一些模块: Python标准库为我们提供了threading和multiprocessing模块编写相应的多线程/多进程代码,但是当项目达到一定的规模,频繁创建/销毁进程或者线程是非常消耗资源的,这个时候我们就要编写自己的线程池/进程池,以空间换时间。但从Python3.2开始,标准库为我们提供了 concurrent.futures 模块,它提供了ThreadPo...

mengyangcust的博客 820

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

python中的多线程、多进程

简介 使用Python可以快速地编写程序,但是python对多线程的支持却不好,在Python2中,更多地使用多进程。在Python3中,引入了concurrent,便于多线程/进程开发。 Python GIL Python代码的执行由Python解释器进行控制,目前Python的解释器有多种,比较著名的有CPython、PyPy、Jython等。其中CPython为最广泛使用的Pyth...

whereismatrix的专栏 449

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Futures

python并发库之concurrent.futures:Python标准库为我们提供了threading和multiprocessing模块编写相应的多线程/多进程代码。从Python3.2开始,标准库为我们提供了concurrent.futures模块,它提供了ThreadPoolExecutor和ProcessPoolExecutor两个类,实现了对threading和multiproces...

sylgdxsgx的专栏 299

【Python】多线程 & 多进程(3)

concurrent.futures 在Python3.2 后被引入 是对 threading 和 multiprocessing 的高级别抽象 包含两个类:ThreadPoolExecutor 和 ProcessPoolExecutor,分别实现多线程和多进程的 Pool 管理 速度会比threading 和 multiprocessing 慢一些,文章《使用Python进行并发编程-Poo

zizi7的专栏 648

python进程池和线程池_Python中的进程池和线程池

0.concurrent.futures库之前我们使用多线程(threading)和多进程(multiprocessing)完成常规的需求:在启动的时候start、jon等步骤不能省,复杂的需要还要用1-2个队列。随着需求越来越复杂,如果没有良好的设计和抽象这部分的功能层次,代码量越多调试的难度就越大。有没有什么好的方法把这些步骤抽象一下呢,让我们不关注这些细节,轻装上阵呢?答案是:有的,从Pyt...

weixin_31271165的博客 266

Python 高手编程系列九百零七:使用 futures 将异步代码同步化

你可以使用这两个模块一起调度在线程或其他进程中执行的阻塞函数,因为它是同步非阻塞协同。如果你想使用 Executor.map()方法,它与 multiprocessing 模块中的 Pool 类。迭代器上执行 func 函数,它的方式类似于 multiprocessing.Pool.map()方法。环,最终在准备好时处理结果。concurrent.futures 模块,该模块稍后将会是我们所谓的解决方法的主要组成部分。况下,这些困难类似于异步编程实例中提到的问题—不兼容接口和 I/O 操作的非异步阻塞。

2301_77888392的博客 793

Python 高手编程系列七百零七:使用 futures 将异步代码同步化

你可以使用这两个模块一起调度在线程或其他进程中执行的阻塞函数,因为它是同步非阻塞协同。如果你想使用 Executor.map()方法,它与 multiprocessing 模块中的 Pool 类。迭代器上执行 func 函数,它的方式类似于 multiprocessing.Pool.map()方法。环,最终在准备好时处理结果。concurrent.futures 模块,该模块稍后将会是我们所谓的解决方法的主要组成部分。况下,这些困难类似于异步编程实例中提到的问题—不兼容接口和 I/O 操作的非异步阻塞。

2301_77888392的博客 790

Python 高手编程系列八百零七:使用 futures 将异步代码同步化

你可以使用这两个模块一起调度在线程或其他进程中执行的阻塞函数,因为它是同步非阻塞协同。如果你想使用 Executor.map()方法,它与 multiprocessing 模块中的 Pool 类。迭代器上执行 func 函数,它的方式类似于 multiprocessing.Pool.map()方法。环,最终在准备好时处理结果。concurrent.futures 模块,该模块稍后将会是我们所谓的解决方法的主要组成部分。况下,这些困难类似于异步编程实例中提到的问题—不兼容接口和 I/O 操作的非异步阻塞。

2301_77888392的博客 689

Python 高手编程系列一千一百零七:使用 futures 将异步代码同步化

你可以使用这两个模块一起调度在线程或其他进程中执行的阻塞函数,因为它是同步非阻塞协同。如果你想使用 Executor.map()方法,它与 multiprocessing 模块中的 Pool 类。迭代器上执行 func 函数,它的方式类似于 multiprocessing.Pool.map()方法。环,最终在准备好时处理结果。concurrent.futures 模块,该模块稍后将会是我们所谓的解决方法的主要组成部分。况下,这些困难类似于异步编程实例中提到的问题—不兼容接口和 I/O 操作的非异步阻塞。

2301_77888392的博客 446

Python 高手编程系列一千零七:使用 futures 将异步代码同步化

你可以使用这两个模块一起调度在线程或其他进程中执行的阻塞函数,因为它是同步非阻塞协同。如果你想使用 Executor.map()方法,它与 multiprocessing 模块中的 Pool 类。迭代器上执行 func 函数,它的方式类似于 multiprocessing.Pool.map()方法。环,最终在准备好时处理结果。concurrent.futures 模块,该模块稍后将会是我们所谓的解决方法的主要组成部分。况下,这些困难类似于异步编程实例中提到的问题—不兼容接口和 I/O 操作的非异步阻塞。

2301_77888392的博客 518

Python 高手编程系列一千七百零七:使用 futures 将异步代码同步化

你可以使用这两个模块一起调度在线程或其他进程中执行的阻塞函数,因为它是同步非阻塞协同。如果你想使用 Executor.map()方法,它与 multiprocessing 模块中的 Pool 类。迭代器上执行 func 函数,它的方式类似于 multiprocessing.Pool.map()方法。环,最终在准备好时处理结果。concurrent.futures 模块,该模块稍后将会是我们所谓的解决方法的主要组成部分。况下,这些困难类似于异步编程实例中提到的问题—不兼容接口和 I/O 操作的非异步阻塞。

2301_77888392的博客 460

Python 高手编程系列一千九百零七:使用 futures 将异步代码同步化

你可以使用这两个模块一起调度在线程或其他进程中执行的阻塞函数,因为它是同步非阻塞协同。如果你想使用 Executor.map()方法,它与 multiprocessing 模块中的 Pool 类。迭代器上执行 func 函数,它的方式类似于 multiprocessing.Pool.map()方法。环,最终在准备好时处理结果。concurrent.futures 模块,该模块稍后将会是我们所谓的解决方法的主要组成部分。况下,这些困难类似于异步编程实例中提到的问题—不兼容接口和 I/O 操作的非异步阻塞。

2301_77888392的博客 310
上一篇: Linux定时任务命令之crontab格式和注意事项
下一篇: python中logging模块用法
Manduner_TJU
博客等级 码龄9年 157粉丝 131原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值