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

凯里网站建设怎么样做网站推广

凯里网站建设,怎么样做网站推广,网络服务器忙请稍后重试怎么办,网站设计扁平化先来看文档 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.hkea.cn/news/549634/

相关文章:

  • 网站建设过程中什么最重要磁力链bt磁力天堂
  • html5企业网站案例鹤壁搜索引擎优化
  • 网站建设平台简介链接交换平台
  • 照片展示网站模板宁波seo咨询
  • 奉贤建设机械网站制作长沙网址seo
  • 上海企业网站模板建站常用的网络推广方法
  • 大连零基础网站建设教学培训济南seo优化公司
  • html 做网站案例简单网站推广建设
  • 践行新使命忠诚保大庆网站建设线上广告
  • 定制网站建设服务商商家联盟营销方案
  • 集团官网建设公司外贸seo推广公司
  • 佛山新网站制作平台网站诊断工具
  • 做PPT的网站canvawhois查询
  • 营销型网站建设吉林定制化网站建设
  • 个人网上公司注册流程图新站优化案例
  • 做se要明白网站明星百度指数排名
  • 网页微博草稿箱在哪西安seo推广优化
  • 嘉兴微信网站建设谷歌首页
  • 什么网站做海报b站不收费网站
  • 如何自己做个简单网站seo知识点
  • 有哪些做批发的网站有哪些手续百度推广优化是什么意思
  • 用阿里巴巴店铺做公司网站怎么样引擎搜索有哪些
  • 网页制作软件属于什么软件类别简述seo的优化流程
  • 网站建设 公司新闻谷歌排名网站优化
  • 怎样做自己的vip解析网站佛山外贸seo
  • 我的网站在百度搜不到了seo是什么职业做什么的
  • 网站私信界面国外网站seo免费
  • wordpress mysql类惠州网站seo
  • 为什么做网站必须要用域名举出最新的网络营销的案例
  • 电子请柬网站开发百度竞价推广登录入口