Appose:使用共享内存的多语言进程间协作。
项目描述
Appose Python
警告:Appose目前处于孵化阶段。以下描述的并非所有功能都可用。本文件包含一些愿景性内容!
什么是Appose?
Appose是一个用于共享内存进程间协作的库。其指导原则是简单和高效。
Appose被编写来允许在Java中轻松执行基于Python的深度学习,而无需复制张量,但其用途远不止于此。使用Appose的步骤如下
- 构建一个包含所需依赖项的环境。
- 创建一个与服务链接的worker,它在自己的进程中运行。
- 通过启动任务在worker上执行脚本。
- 通过回调异步接收任务的状态更新。
有关Appose的更多信息,请参阅https://apposed.org。
这个项目是做什么的?
这是Appose的Python实现。
如何使用它?
该软件包的名称为appose
。
PyPI/Pip
要使用PyPI软件包,请将appose
添加到您的项目依赖中。
根据您项目的设置,这可能涉及编辑requirements.txt
、setup.py
、setup.cfg
和/或pyproject.toml
。
如果您是初学者,我们建议使用pyproject.toml
(请参阅本指南)
dependencies = [
"appose"
]
Conda/Mamba
要使用conda-forge软件包,请将appose
添加到您的environment.yml
的dependencies
部分
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的所有实现都使用相同的跟踪器
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装软件包的更多信息。
源分布
appose-0.2.0.tar.gz (18.5 kB 查看哈希值)
构建分布
appose-0.2.0-py3-none-any.whl (20.6 kB 查看哈希值)
关闭
appose-0.2.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 6a6458843f19dd84c5680e525601118566e51383046225e4a7e0a1d5fcd3312f |
|
MD5 | 3c8c1a84df1bf0599f0d3178e00ea98a |
|
BLAKE2b-256 | ae0abe5d805a48b9a73e640ced48594b34ad2edd27fa035c47ec63052b74a226 |
关闭
appose-0.2.0-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 9e247d954daf612b11749f46f337c7f17dde96f3205f23fad714c1e309c7b88c |
|
MD5 | 08345e556f5e5c1fa879ad765fa20dad |
|
BLAKE2b-256 | a63507bc93be2c928abd82fb0d44290cfeb7035261b8788de8a41fb7deee078c |