collapse

* Posts Recentes

Rede de comboios elétricos totalmente autónomos 10 ton em Rust em realtime. por blabla
[18 de Setembro de 2022, 18:44]


NiMH por 18650 por almamater
[18 de Setembro de 2022, 17:21]


How We Get Down to 0.2nm CPUs and GPUs - TechTechPotato por blabla
[18 de Setembro de 2022, 15:38]


Nova secção de Raspberry Pi Bare Metal em C e em Rust e Systems Programming por blabla
[04 de Setembro de 2022, 08:55]


The code for AGI will be simple - John Carmack and Lex Fridman por blabla
[29 de Agosto de 2022, 07:36]


Wavelets: a mathematical microscope por blabla
[28 de Agosto de 2022, 20:50]


Bom livro - Dive Into Systems por blabla
[28 de Agosto de 2022, 12:19]


graus negativos inclinação por josecarlos
[28 de Agosto de 2022, 11:31]


Super obsolescência super programada? por SerraCabo
[06 de Agosto de 2022, 11:36]


Motor de aspirador por dropes
[02 de Agosto de 2022, 22:18]

Autor Tópico: Desenvolver em Rust com inline em Python  (Lida 457 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline blabla

  • Mini Robot
  • *
  • Mensagens: 245
Desenvolver em Rust com inline em Python
« em: 22 de Outubro de 2021, 23:47 »
Boa noite a todos,

Hoje gostava de vos trazer uma quimera, algo de interessante e muito útil,  principalmente em cenários de prototipagem exploratória ou para zonas não criticas em termo de performance.

Rust é de alta performance mas o seu desenvolvimento é um pouco mais lento devido ao borrow checker.

Python é de desenvolvimento muito rápido (pseudo-código executável) mas incrivelmente lento (na ordem das 50x a 180x mais lento), tem muitas libs para tudo e mais um par de botas mas tem o GIL (só executa numa única thread código Python).

Imaginem fazer um programa Rust com inline Python de uma forma não intrusiva, em que os dados são partilhados entre Rust e Python!

A lib (crate) que vos gostaria de falar hoje é:

inline-python
Inline Python code directly in your Rust code
https://crates.io/crates/inline-python

Código de exemplo Rust com inline Python:
Código: [Seleccione]
use inline_python::python;

fn main() {
    let who = "world";
    let n = 5;
    python! {
        for i in range('n):
            print(i, "Hello", 'who)
        print("Goodbye")
    }
}


Código: [Seleccione]
// Exemplo que cria os dados em Rust e faz o gráfico em Python com a lib MatPlotLib.

use inline_python::python;

fn main() {
    let data = vec![(4, 3), (2, 8), (3, 1), (4, 0)];
    python! {
        import matplotlib.pyplot as plt
        plt.plot('data)
        plt.show()
    }
}


Todos os passos do seu funcionamento e desenvolvimento estão explicados de forma brilhante nesta sequência detalhada de posts neste blog.

Writing Python inside your Rust code - Part 1 - Mara's Blog
https://blog.m-ou.se/writing-python-inside-rust-1/

Writing Python inside your Rust code - Part 1A - Mara's Blog
https://blog.m-ou.se/writing-python-inside-rust-1a/

Writing Python inside your Rust code - Part 2 - Mara's Blog
https://blog.m-ou.se/writing-python-inside-rust-2/

Writing Python inside your Rust code - Part 3 - Mara's Blog
https://blog.m-ou.se/writing-python-inside-rust-3/

Writing Python inside your Rust code - Part 4 - Mara's Blog
https://blog.m-ou.se/writing-python-inside-rust-4/

Para estas e outras informações sobre Rust, vejam o meu pequeno guia:

How to learn modern Rust
https://github.com/joaocarvalhoopen/How_to_learn_modern_Rust

Obrigado,

Cumprimentos,
João
« Última modificação: 23 de Outubro de 2021, 09:00 por blabla »