跳转到主要内容

multiprocessing.Pool的替代品。

项目描述

Steam工厂

multiprocessing的Pool的替代品,提供更强大的功能。允许异步运行通用的Python函数。

示例用法

首先,我们需要一个执行某些操作的功能。在这种情况下,它只是等待一秒钟。

import time

def do_nothing():
    time.sleep(1)
    print('Sleeping done')  # If you want some feedback..

为了并行运行此功能,我们需要一个 Factory 实例。

from steamfactory import Factory

# Create a factory, running up to 4 tasks concurrently
factory = Factory(size=4)

一切准备就绪,我们可以安排一些异步函数执行

for _ in range(4):
    factory.run(do_nothing)

一秒钟后,你应该会看到四个“Sleeping done”消息同时打印出来。

如果您在脚本中使用此功能,并且需要主进程等待所有任务执行后再终止(这意味着任务将会丢失),请记住调用 shutdown() 方法

factory.shutdown()

获取反馈

如何从任务中获取“反馈”通常很大程度上取决于应用程序。很多时候你甚至不需要关心函数的返回值,你只需要确保某些操作被执行。其他时候,值可能很大,或者所需的保留时间可能不同。

该库目前没有提供任何将结果返回给调用者的方式,但你可以轻松地做些像这样的事情

import time
from multiprocessing import Manager

from steamfactory import Factory

_mgr = Manager()
results = _mgr.dict()  # Shared between processes


def addup(a, b):
    time.sleep(1)
    results[(a, b)] = a + b

# Create a factory, running up to 4 tasks concurrently
factory = Factory(size=4)

# Let's schedule some tasks
factory.run(addup, 1, 2)
factory.run(addup, 3, 4)
factory.run(addup, 5, 6)
factory.run(addup, 7, 8)

factory.shutdown()

# Now, results contains all the results (after a 1s processing
# time)

变更日志

0.1

初始发布,实现运行函数的异步功能。

项目详情


下载文件

下载适合您平台文件的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源分布

SteamFactory-0.1.tar.gz (3.9 kB 查看哈希值)

上传于 源代码

构建版本

SteamFactory-0.1-py3-none-any.whl (5.7 kB 查看哈希值)

上传于 Python 3

SteamFactory-0.1-py2-none-any.whl (5.7 kB 查看哈希值)

上传于 Python 2

支持