python使用期物处理并发的方法
导读:本文共2545.5字符,通常情况下阅读需要8分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要: 1. futures.ThreadPoolExecutorimportosimporttimeimportsysimportrequestsPOP20_CC=('CNINUSIDBRPKNGBDRUJP''MXPHVNETEGDEIRTRCDFR').split()BASE_URL='http://flupy.o... ...
目录
(为您整理了一些要点),点击可以直达。通常不应自己创建期物
只能由并发框架(concurrent.futures 或 asyncio)实例化 原因:期物 表示终将发生的事情,其 执行的时间 已经排定。因此,只有排定把某件事交给 concurrent.futures.Executor 子类处理时,才会创建 concurrent.futures.Future 实例
例如,Executor.submit() 方法的参数是一个可调用的对象,调用这个方法后会为传入的可调用对象 排期,并返回一个期物
CPython 解释器本身就不是线程安全的,因此有全局解释器锁(GIL), 一次只允许使用一个线程执行 Python 字节码。因此,一个 Python 进程 通常不能同时使用多个 CPU 核心
标准库中所有执行阻塞型 I/O 操作的函数,在等待操作系统返回结果时 都会释放 GIL。 这意味着在 Python 语言这个层次上可以使用多线程,而 I/O 密集型 Python 程序能从中受益:一个 Python 线程等待网络响应时,阻塞型 I/O 函数会释放 GIL,再运行一个线程(网络下载,文件读写都属于 IO 密集型)
这个模块实现的是真正 的并行计算,因为它使用 ProcessPoolExecutor 类把工作分配给多个 Python 进程处理。 因此,如果需要做 CPU 密集型处理,使用这个模块 能绕开 GIL,利用所有可用的 CPU 核心
使用 concurrent.futures 模块能特别轻松地 把 基于线程 的方案转成 基于进程 的方案
ProcessPoolExecutor 的价值体现在 CPU 密集型 作业上
python使用期物处理并发的方法的详细内容,希望对您有所帮助,信息来源于网络。