iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >如何使用pythonwasmtime调用rust生成的wasm库
  • 192
分享到

如何使用pythonwasmtime调用rust生成的wasm库

pythonwasmtime调用rust生成的wasm库pythonwasmtime调用wasm库 2023-01-04 12:01:08 192人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录安装rust target wasm32-wasi编写rust库将rust库编译为wasm字节码安装python wasmtime库参考链接本文介绍了使用Python wasmt

本文介绍了使用Python wasmtime来访问rust库的便捷方法,步骤极其简练,可以在生产环境中使用。

安装rust target wasm32-wasi

使用如下命令安装wasm32-wasi,用于便捷地将rust编译为wasm字节码。

rustup target add wasm32-wasi

编写rust库

使用cargo创建rust库

cd /mnt/d/workspace/rust
carGo new --lib wasmlib

编辑Cargo.toml文件

cd wasmlib
echo "[lib]" >> Cargo.toml
echo "crate-type = ['cdylib']" >> Cargo.toml

编辑rust源文件
编辑src/lib.rs, 修改文件内容如下

#[no_mangle]
pub extern "C" fn add(a: i32, b: i32) -> i32 {
    a + b
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn it_works() {
        let result = add(2, 2);
        assert_eq!(result, 4);
    }
}

将rust库编译为wasm字节码

将rust库编译为wasm字节码

cargo build --release --target wasm32-wasi

查看生成的wasm文件

cd target/wasm32-wasi/release
ls

结果如下,其中wasmlib.wasm就是wasm字节码文件:

build  deps  examples  incremental  wasmlib.d  wasmlib.wasm

安装python wasmtime库

pip3 install wasmtime

测试使用python wasmtime调用rust库(wasm字节码)

hzw@hzwwin:/mnt/d/workspace/rust/wasmlib/target/wasm32-wasi/release$ python3
Python 3.10.4 (main, Apr  2 2022, 09:04:19) [GCC 11.2.0] on linux
Type "help", "copyright", "credits" or "license" for more infORMation.
>>> import wasmtime.loader
>>> import wasmlib # 不需要加.wasm扩展名
>>> dir(wasmlib)
['__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'add', 'memory']
>>> wasmlib.add(2, 2)
4
>>> wasmlib.add(2, 4)
6
>>> wasmlib.add("a", "b")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/hzw/.local/lib/python3.10/site-packages/wasmtime/loader.py", line 89, in <lambda>
    item = lambda *args,func=func: func(store, *args)  # noqa
  File "/home/hzw/.local/lib/python3.10/site-packages/wasmtime/_func.py", line 83, in __call__
    param_vals = [Val._convert(ty, params[i]) for i, ty in enumerate(param_tys)]
  File "/home/hzw/.local/lib/python3.10/site-packages/wasmtime/_func.py", line 83, in <listcomp>
    param_vals = [Val._convert(ty, params[i]) for i, ty in enumerate(param_tys)]
  File "/home/hzw/.local/lib/python3.10/site-packages/wasmtime/_value.py", line 154, in _convert
    raise TypeError("don't know how to convert %r to %s" % (val, ty))
TypeError: don't know how to convert 'a' to i32

参考链接

https://docs.wasmtime.dev/  

Https://pypi.org/project/wasmtime/

到此这篇关于如何使用python wasmtime调用rust生成的wasm库的文章就介绍到这了,更多相关python wasmtime调用rust生成的wasm库内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 如何使用pythonwasmtime调用rust生成的wasm库

本文链接: https://www.lsjlt.com/news/176688.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何使用pythonwasmtime调用rust生成的wasm库
    目录安装rust target wasm32-wasi编写rust库将rust库编译为wasm字节码安装python wasmtime库参考链接本文介绍了使用python wasmt...
    99+
    2023-01-04
    python wasmtime调用rust生成的wasm库 python wasmtime调用wasm库
  • 如何使用python wasmtime调用rust生成的wasm库
    目录安装rust target wasm32-wasi编写rust库将rust库编译为wasm字节码安装python wasmtime库参考链接本文介绍了使用python wasmt...
    99+
    2023-01-04
    python wasmtime调用rust生成的wasm库 python wasmtime调用wasm库
  • 如何使用golang生成wasm文件并在浏览器上执行
    这篇文章主要讲解了“如何使用golang生成wasm文件并在浏览器上执行”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用golang生成wasm文件并...
    99+
    2024-04-02
  • Rust使用libloader调用动态链接库
    目录引言main.rs 代码引言 最近需要使用Rust动态调用动态链接库,本来打算是使用libloading的,但是libloading在调用dll中的函数的时,是必须要在编译时确定...
    99+
    2024-04-02
  • 如何使用VBS调用Photoshop批量生成缩略图
    这篇文章给大家分享的是有关如何使用VBS调用Photoshop批量生成缩略图的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。模仿腾讯新闻页,给KingCms添加了新闻页图片点播的代码,代码要求的图片点播格式如下:0...
    99+
    2023-06-08
  • 如何在python中调用生成器
    本篇文章为大家展示了如何在python中调用生成器,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。python有哪些常用库python常用的库:1.requesuts;2.scrapy;3.pillo...
    99+
    2023-06-14
  • 如何使用random库随机生成浮点数
    要使用random库随机生成浮点数,可以使用random模块中的random()函数。此函数返回一个0到1之间的随机浮点数。以下是一...
    99+
    2023-09-06
    random
  • Rust循环如何使用
    今天小编给大家分享一下Rust循环如何使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。while 循环while 循环是最...
    99+
    2023-06-27
  • python生成器如何使用
    这篇文章主要介绍“python生成器如何使用”,在日常操作中,相信很多人在python生成器如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python生成器如何使用”...
    99+
    2024-04-02
  • JavaScript生成器如何使用
    这篇文章主要讲解了“JavaScript生成器如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript生成器...
    99+
    2024-04-02
  • k8s的imagePullSecrets如何生成及使用
    公司的docker仓库(harbor),是私有的,需要用户认证之后,才能拉取镜像。 登录docker登录到k8s master节点,先登录dockerroot@k8s-master:~# docker logi...
    99+
    2023-01-31
    k8s imagePullSecrets
  • 如何在Python中使用Numpy库生成二维码?
    二维码是现代社会中常见的一种二维条码,它可以存储大量的信息,被广泛应用于商品管理、物流追踪、移动支付等领域。在Python中,我们可以使用Numpy库生成二维码,下面我们就来看看如何实现。 首先,我们需要安装qrcode库,它是一个用于生成...
    99+
    2023-07-21
    二维码 numpy http
  • 关于使用rust调用c++静态库并编译nodejs包的问题
    目录一、创建项目二、Cargo.toml三、package.json四、代码分析在项目上经常要用到身份证阅读器、护照阅读仪、指纹仪等各种品牌硬件,假如每套系统的都做集成开发那代码的维...
    99+
    2022-11-13
    rust调用c++静态库 c++编译nodejs包
  • Rust应用调用C语言动态库的操作方法
    目录外部功能接口FFIUDP套接字的读超时Rust调用C语言动态库中的函数避免重复造轮子,使用Rust官方C语言库外部功能接口FFI 虽然高级(脚本)编程语言的功能丰富,表达能力强,...
    99+
    2023-01-29
    Rust调用C语言动态库 Rust C语言动态库
  • 如何使用WCF生成代理
    这篇文章主要为大家展示了“如何使用WCF生成代理”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用WCF生成代理”这篇文章吧。利用WSE(Web Service Enhancements)可...
    99+
    2023-06-17
  • python如何使用reportlab生成pdf
    这篇文章主要介绍“python如何使用reportlab生成pdf”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“python如何使用reportlab生成pdf”文章能帮助大家解决问题。Intro项...
    99+
    2023-06-29
  • Node中如何用Puppeteer库生成海报
    这篇文章主要介绍“Node中如何用Puppeteer库生成海报”,在日常操作中,相信很多人在Node中如何用Puppeteer库生成海报问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大...
    99+
    2024-04-02
  • 如何在pandas中使用apply使用生成新的列
    如何在pandas中使用apply使用生成新的列?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。在pandas的apply方法用于对指定列的每个元素进行相同的操作,下面生成一...
    99+
    2023-06-06
  • 如何使用PHP生成二维码?
    二维码是现代社会信息传播中不可或缺的一种方式,它将复杂的信息通过图形化的形式直观地展现给人们。在网站开发、移动应用开发中,我们经常会用到二维码生成和识别的技术来方便用户获取信息。PHP作为一种流行的后端编程语言,也提供了方便的二维码生成和识...
    99+
    2023-05-21
    二维码 PHP 生成
  • 如何使用IDEA代码生成器
    本篇内容主要讲解“如何使用IDEA代码生成器”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用IDEA代码生成器”吧!基本使用IDEA 自带很多常用的动态模...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作