当前位置: 首页 > news >正文

wordpress全站搜索免费刷网站百度关键词

wordpress全站搜索,免费刷网站百度关键词,开发公司能否以办理完土地证后,云商城自助下单平台先来看文档 concurrent.futures 是 Python 标准库中的一个模块,它提供了一个高级接口来异步执行代码,使用线程或进程池来并行运行任务。这个模块提供了两种主要的池类型:ThreadPoolExecutor 和 ProcessPoolExecutor,以及一个通用的…

先来看文档

在这里插入图片描述

concurrent.futures 是 Python 标准库中的一个模块,它提供了一个高级接口来异步执行代码,使用线程或进程池来并行运行任务。这个模块提供了两种主要的池类型:ThreadPoolExecutorProcessPoolExecutor,以及一个通用的 Executor 接口。此外,Executor 接口中的 submit 方法用于提交任务给执行器执行。

1. ThreadingPoolExecutor

ThreadPoolExecutor 使用线程池来并行执行任务。由于线程共享同一个进程的内存空间,因此线程间通信和共享数据相对容易,但这也意味着它们不能充分利用多核处理器的优势,因为 Python 的全局解释器锁(GIL)限制了同一时间只有一个线程可以执行 Python 字节码。

2. ProcessPoolExecutor

ProcessPoolExecutor 使用进程池来并行执行任务。每个进程都有自己独立的内存空间,因此它们可以绕过 GIL,充分利用多核处理器的优势。然而,进程间通信和共享数据比线程间要复杂和昂贵。

3. Executor.submit

submit 方法是 Executor 接口的一部分,用于提交一个可调用的对象(通常是函数)给执行器执行。它返回一个 Future 对象,这个对象可以用来查询任务的状态、获取任务的返回值或取消任务。

示例

使用 ThreadPoolExecutor
from concurrent.futures import ThreadPoolExecutor
import timedef task(n):time.sleep(2)return n * nwith ThreadPoolExecutor(max_workers=3) as executor:futures = [executor.submit(task, i) for i in range(10)]for future in futures:print(future.result())

在这个例子中,我们创建了一个 ThreadPoolExecutor,其最大工作线程数为 3。然后,我们提交了 10 个任务给执行器,每个任务调用 task 函数,并等待每个任务完成,打印其返回值。

使用 ProcessPoolExecutor
from concurrent.futures import ProcessPoolExecutor
import osdef task(n):return os.getpid(), n * nwith ProcessPoolExecutor(max_workers=3) as executor:futures = [executor.submit(task, i) for i in range(10)]for future in futures:pid, result = future.result()print(f"PID: {pid}, Result: {result}")

在这个例子中,我们创建了一个 ProcessPoolExecutor,其最大工作进程数为 3。每个任务调用 task 函数,返回当前进程的 PID 和 n * n 的结果。我们打印每个任务的进程 ID 和结果,以展示任务是在不同的进程中执行的。

总结

  • ThreadPoolExecutor 适用于 I/O 密集型任务,因为线程间通信成本低。
  • ProcessPoolExecutor 适用于 CPU 密集型任务,因为它可以绕过 GIL,充分利用多核处理器。
  • submit 方法用于提交任务给执行器,并返回一个 Future 对象用于查询任务状态或获取结果。

concurrent.futures 模块中,submit 函数是 Executor 接口的一部分,用于提交一个可调用的对象(如函数)给执行器(如 ThreadPoolExecutorProcessPoolExecutor)异步执行。以下是对 submit 函数参数的详细说明,以及为何 name=value 时是实参,而 **kwargs 是形参的解释。

submit 函数的参数

submit 函数的定义通常如下:

submit(fn, *args, **kwargs)
  • fn:这是需要异步执行的函数。它应该是一个可调用的对象,如函数、方法或实现了 __call__ 方法的类的实例。
  • *args:这是传递给 fn 函数的位置参数。*args 允许你传递任意数量的位置参数给 fn
  • **kwargs:这是传递给 fn 函数的关键字参数。**kwargs 允许你传递任意数量的关键字参数给 fn,这些参数在函数调用时以 name=value 的形式传递。

实参(Actual Arguments)与形参(Formal Parameters)

  • 实参:在函数调用时传递给函数的实际值。在 submit 函数的上下文中,当你使用 name=value 的形式传递参数时,这些 name=value 对就是实参。例如,在 executor.submit(my_function, x=10, y=20) 中,x=10y=20 就是实参。

  • 形参:在函数定义中声明的参数。在 submit 函数被调用的函数 fn 的上下文中,fn 函数定义中声明的参数就是形参。例如,如果 fn 定义为 def my_function(x, y),则 xy 就是形参。

当你使用 **kwargssubmit 函数中传递参数时,这些参数以关键字参数的形式传递给 fn 函数。由于 **kwargssubmit 函数定义中是一个形参(它接受任意数量的关键字参数),而这些关键字参数在 submit 被调用时成为传递给 fn 函数的实参。

示例

假设我们有一个简单的函数 my_function,它接受两个参数 xy,并返回它们的和:

def my_function(x, y):return x + y

我们可以使用 ThreadPoolExecutorsubmit 函数来异步调用 my_function

from concurrent.futures import ThreadPoolExecutorwith ThreadPoolExecutor(max_workers=1) as executor:future = executor.submit(my_function, x=10, y=20)  # 这里 x=10, y=20 是实参result = future.result()  # 获取异步执行的结果print(result)  # 输出: 30

在这个例子中,x=10y=20 是传递给 my_function 的实参,而 xymy_function 的形参。**kwargssubmit 函数中允许我们以关键字参数的形式传递这些实参给 my_function

http://www.dinnco.com/news/11968.html

相关文章:

  • 三星网上商城客服电话杭州优化公司多少钱
  • 电影宣传网站模板免费下载百度爱采购
  • 亚马逊网站开发的技术百度知道首页登录入口
  • 搜索排名优化公司厦门seo小谢
  • wang域名注册网站咸阳网络推广
  • 做视频网站怎么看不会卡关键词分类哪八种
  • SEO网站建设全方位部署最近的新闻事件
  • 怎样做网站的背景图片成品短视频网站源码搭建
  • 素材模板网站网站制作代码
  • 网站模板用什么软件做百度手机
  • 免费html5播放器优化seo排名
  • 直播网站建设书籍营销失败案例分析
  • 做网站的总要求上门磁力岛
  • 荔湾网站制作公司百度搜索引擎优化详解
  • 成都哪里有网站开发公司外链推广平台
  • 如何在b2b网站做外链网页seo是什么意思
  • 如何做https网站网页广告
  • 织梦如何做中英文网站网络公司
  • 微网站建设要多少钱网站内容检测
  • 河南省住房城乡建设厅网站优秀网站seo报价
  • 湛江网站开发成都网站seo诊断
  • wordpress付免签插件网站优化最为重要的内容是
  • 网站建设seo合同书网站优化塔山双喜
  • 如何才能做好品牌网站建设排名优化关键词
  • 做百科网站网站友链交换平台
  • 北京网站建设公司排名站长之家端口扫描
  • 营销型网站建设的特点阿里巴巴关键词排名优化
  • 长葛做网站网站推广的目的
  • 公安局网站备案号前缀国内搜索引擎网站
  • 整合资源加强全市网站建设麒麟seo软件