一个简单的多处理函数池
pytaskpool的Python项目详细描述
PytaskPool
一个简单的多进程函数池,用于创建结果生成器
pytaskpool使用python多处理模块
pytaskpool提供了一种在进程池(而不是线程池)中执行python函数的简单方法,可以使用所有cpu 核心。然后可以按顺序(通过生成器方法)获得函数结果。
安装
python索引包(pip)中提供了pytaskpool, 可以运行以下命令安装它:
$ pip install pytaskpool
或者用这样的git:
$ git clone https://github.com/govlog/pytaskpool $ cd pytaskpool $ sudo python setup.py install
或者甚至在http:https://github.com/govlog/pytaskpool/archive/master.zip
用法
此示例代码将使用8个进程池同时启动8个具有不同参数的函数。 所有已启动函数返回的结果将通过get_sorted_results()方法获取,该方法是一个生成器 按顺序返回函数结果。
例外的执行时间应该在1秒左右。
示例代码:
import pytaskpool as tp from time import sleep def my_func(x): sleep(1) return [x ** x] mypool = tp.TaskPool([], 8) for r in range(8): mypool.launch(my_func, r) unsorted = [r for r in mypool.get_unsorted_results()] sorted = [r for r in mypool.get_sorted_results()] print "unsorted :",unsorted print "sorted :",sorted
终端输出应如下所示:
$ time python test.py unsorted : [[1], [4], [1], [3125], [823543], [256], [27], [46656]] sorted : [[1], [1], [4], [27], [256], [3125], [46656], [823543]] real 0m1.031s user 0m0.858s sys 0m0.193s