跳转到主要内容

Appose:使用共享内存的多语言进程间协作。

项目描述

Appose Python

警告:Appose目前处于孵化阶段。以下描述的并非所有功能都可用。本文件包含一些愿景性内容!

什么是Appose?

Appose是一个用于共享内存进程间协作的库。其指导原则是简单高效

Appose被编写来允许在Java中轻松执行基于Python的深度学习,而无需复制张量,但其用途远不止于此。使用Appose的步骤如下

  • 构建一个包含所需依赖项的环境。
  • 创建一个与服务链接的worker,它在自己的进程中运行。
  • 通过启动任务在worker上执行脚本。
  • 通过回调异步接收任务的状态更新。

有关Appose的更多信息,请参阅https://apposed.org

这个项目是做什么的?

这是Appose的Python实现。

如何使用它?

该软件包的名称为appose

PyPI/Pip

要使用PyPI软件包,请将appose添加到您的项目依赖中。

根据您项目的设置,这可能涉及编辑requirements.txtsetup.pysetup.cfg和/或pyproject.toml

如果您是初学者,我们建议使用pyproject.toml(请参阅本指南

dependencies = [
  "appose"
]

Conda/Mamba

要使用conda-forge软件包,请将appose添加到您的environment.ymldependencies部分

dependencies:
  - appose

示例

以下是从Python调用Java的简单示例

import appose
env = appose.java(vendor="zulu", version="17").build()
with env.groovy() as groovy:
    task = groovy.task("5 + 6")
    task.wait_for()
    result = task.outputs["result"]
    assert 11 == result

注意:appose.java构建器计划中,但尚未实现。

以下是一个使用更多Appose功能的示例

import appose
from time import sleep

golden_ratio_in_groovy = """
// Approximate the golden ratio using the Fibonacci sequence.
previous = 0
current = 1
for (i=0; i<iterations; i++) {
    if (task.cancelRequested) {
        task.cancel()
        break
    }
    task.update(null, i, iterations)
    v = current
    current += previous
    previous = v
}
task.outputs["numer"] = current
task.outputs["denom"] = previous
"""

env = appose.java(vendor="zulu", version="17").build()
with env.groovy() as groovy:
    task = groovy.task(golden_ratio_in_groovy)

    def task_listener(event):
        match event.responseType:
            case ResponseType.UPDATE:
                print(f"Progress {task.current}/{task.maximum}")
            case ResponseType.COMPLETION:
                numer = task.outputs["numer"]
                denom = task.outputs["denom"]
                ratio = numer / denom
                print(f"Task complete. Result: {numer}/{denom} =~ {ratio}");
            case ResponseType.CANCELATION:
                print("Task canceled")
            case ResponseType.FAILURE:
                print(f"Task failed: {task.error}")

    task.listen(task_listener)

    task.start()
    sleep(1)
    if not task.status.is_finished():
        # Task is taking too long; request a cancelation.
        task.cancel()

    task.wait_for()

当然,上述示例可以完全使用一种语言完成。但希望它们能暗示轻松跨语言集成的可能性。

问题跟踪器

Appose的所有实现都使用相同的跟踪器

https://github.com/apposed/appose/issues

项目详情


下载文件

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

源分布

appose-0.2.0.tar.gz (18.5 kB 查看哈希值)

上传时间

构建分布

appose-0.2.0-py3-none-any.whl (20.6 kB 查看哈希值)

上传时间 Python 3

由以下组织支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面