vox/concurrent-futures

此包最新版本(0.1)没有提供许可证信息。

使用Python-like接口在Python上并行执行多个进程。

0.1 2018-05-31 04:45 UTC

This package is auto-updated.

Last update: 2024-09-30 02:16:15 UTC


README

此小型库受到Python的concurrent future模块的极大启发,试图以简单和健壮的方式抽象PHP的pcntl扩展。

要求

  • php 7.1+
  • pcntl
  • cli SAPI

安装

$ composer require vox/concurrent-futures

用法

// start a pool with a maximum of permited child processes.
//there will be a queue of runnable processes while the pool is full
$pool = new ProcessPool(3);

// map method return an array of future objects
$futures = $pool->map(function ($number) {
    return $number;
}, range(0, 2));

foreach ($futures as $future) {
    // a future object carries the result from the callable, it may throw an exception in case the callable has thrown one
    $result = $future->result();
}

// instead of map, one can submit callables one by one, and manipulate the resulting future object
$future = $pool->submit(function ($number) {
    return $number;
});

$result = $future->result();