接口

task_pool_abc module

Asynchronous Task Pool Base Class.

class aio_parallel_tools.aio_task_pool.core.task_pool_abc.AioTaskPoolABC[源代码]

基类:abc.ABC

异步任务池的抽象基类

任务池使用生产者消费者模式,通常用于限制并行度,任务池会管理许多消费者来执行任务.可以通过`scale`接口来伸缩消费者数量.可以使用`submit`接口来提交任务.也可以使用`pause`接口来暂停任务提交.

abstract async close(close_worker_timeout: Union[int, float, None] = None, close_pool_timeout: int = 3, safe=True) → None[源代码]

关闭所有执行器,并停止接收任务.

参数
  • close_worker_timeout (Union[int, float, None], optional) -- 关闭所有worker的过期时间,也会等待任务全部执行完,默认为`None`

  • close_pool_timeout (int, optional) -- 等待队列同步的过期时间,默认3s

  • safe (bool, optional) -- 当关闭抛出异常时抛出警告替代,默认为`True`

引发
  • te -- 关闭执行器超时

  • e -- 关闭执行器时抛出未知错误.

  • te -- 等待队列同步超时.

  • e -- 等待队列同步时抛出未知异常.

abstract property closed

检查任务池是否已经被关闭了.

abstract property max_tasks_number

最大可容纳的等待执行的任务数目.

返回

最大可容纳的等待执行的任务数目.

返回类型

int

abstract pause() → bool[源代码]

任务池暂停/取消暂停

返回

检查任务池是否被暂停了

返回类型

bool

abstract property paused

检查用户是否可以提交任务

如果任务池可以接收新任务,返回`False`

返回

是否可以提交任务

返回类型

bool

abstract async scale(num: int) → int[源代码]

伸缩一定数量的任务池并行度

参数

num (int) -- 如果为正数则增加并行度,反之降低并行度.

返回

要伸缩的数量

返回类型

int

abstract scale_nowait(num: int, soft=True) → int[源代码]

同步的伸缩任务池的并行度

参数
  • num (int) -- 如果为正数则增加并行度,反之降低并行度.

  • soft (bool, optional) -- 在缩小并行度时是否软关闭执行器,如果是`False`则会强制关闭执行器,则默认为`True`

返回

要伸缩的数量

返回类型

int

abstract property size

任务池的并行度

返回

任务池的并行度

返回类型

int

abstract async start() → None[源代码]

初始化执行器并打开任务池接收任务.

abstract async submit(task_func: Callable[[Any], Any], *, args: List[Any] = [], kwargs: Dict[str, Any] = {}, blocking: bool = True) → Union[_asyncio.Future, Any][源代码]

提交任务到任务池

参数
  • task_func (Callable[[Any], Any]) -- 将被执行器执行的任务函数

  • args (List[Any], optional) -- 任务函数的位置参数.默认为[]

  • kwargs (Dict[str, Any], optional) -- 任务函数的关键字参数.默认为{}

  • blocking (bool, optional) -- 设置是否要等待任务完成获取结果,否的话返回一个期物对象.默认为`True`

引发

NotAvailable -- 任务池被暂停了

返回

如果`blocking`被设置为`True`,那么将返回任务的结果,否则返回一个可以`await`任务结果的期物对象.

返回类型

Union[asyncio.Future, Any]

abstract submit_nowait(task_func: Callable[[Any], Any], *, args: List[Any] = [], kwargs: Dict[str, Any] = {}) → _asyncio.Future[源代码]

同步的提交任务到任务池

参数
  • task_func (Callable[[Any], Any]) -- 将被执行器执行的任务函数

  • args (List[Any], optional) -- 任务函数的位置参数.默认为[]

  • kwargs (Dict[str, Any], optional) -- 任务函数的关键字参数.默认为{}

引发
  • NotAvailable -- 任务池被暂停了或者

  • e -- 抛出了别的异常

  • NotAvailable -- 任务池队列满了,无法再接收更多任务.

返回

一个可以被`await`获得任务结果的期物对象.

返回类型

asyncio.Future

abstract property waiting_tasks_number

Now number of the waiting tasks.

返回

还在等待执行的任务数目.

返回类型

int