Rustacean & Pythonista
Courses
Reviews
- The world's easiest Rust programming
- The world's easiest Rust programming
Posts
Q&A
๋ฉ๋ชจ๋ฆฌ ์์ ์ฑ์ ๋ํ ์ง๋ฌธ
ํ๋์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ ๋ํด์ ๋จ ํ๋์ ์ ๊ทผ์๋ง ์ ๊ทผ์ ํ์ฉํ๋ค๋ ์๋ฏธ์ ๋๋ค. ์๋ฅผ ๋ค์ด ํ๋์ ๊ฐ์ ๋ํด ์ฌ๋ฌ ๊ฐ์ ํฌ์ธํฐ๋ฅผ ์ค์ ๋ก ๊ฐ์ง๊ณ ์๋๋ผ๋, ํด๋น ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ ์ ๊ทผํ๊ณ ๊ฐ์ ์ฝ๊ณ ์์ ํ๋ ๊ณผ์ ์ ๋ชจ๋ atomic ํ๊ฒ ์ฒ๋ฆฌํฉ๋๋ค. ๋ฌผ๋ก ์ด๋ ์ด๋๊น์ง๋ safe ๋ฌ์คํธ์ ์ด์ผ๊ธฐ์ด๊ณ , unsafe ๋ฌ์คํธ๋ก ๋ค์ด๊ฐ๋ฉด ์ง์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ ์ ๊ทผํ๋ C ์คํ์ผ ํฌ์ธํฐ์ฒ๋ผ ์ฌ์ฉ๋ ๊ฐ๋ฅํฉ๋๋ค. ๊ฒฐ๋ก ์ ์ผ๋ก ๋ฌ์คํธ์์ ์ ๊ณตํ๋ ๋ฌธ๋ฒ๊ณผ ๋๊ตฌ๋ค๋ง ์ฌ์ฉํ๋ค๋ฉด ํญ์ ์์์ ์ฐ์ฐ์ด ๋ณด์ฅ๋๋ค๊ณ ์ดํดํ์ ๋ ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.
- 0
- 1
- 30
Q&A
๋ฌ์คํธ๋ก ํ์ด์ฌ ํจํค์ง ๋ง๋ค๊ธฐ ์ค์ต์ ํด๋ณด๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํฉ๋๋ค
์๋ ํ์ธ์, pyo3๊ฐ ๋ฒ์ ์ด ์ฌ๋ผ๊ฐ๋ฉด์ ์๊ธด ๋ฌธ์ ์ ๋๋ค. ๋จผ์ lib.rs๋ ๋ค์๊ณผ ๊ฐ์ด ์์ ํ์ธ์. use pyo3::prelude::*; fn _run(n: u64) -> u64 { match n { 0 => 0, 1 => 1, _ => _run(n - 1) + _run(n - 2), } } #[pyfunction] fn run(n: u64) -> PyResult { Ok(_run(n)) } /// A Python module implemented in Rust. #[pymodule] fn fibonacci(_py: Python, m: &Bound) -> PyResult { m.add_function(wrap_pyfunction!(run, m)?)?; Ok(()) }๊ทธ๋ฆฌ๊ณ Cargo.toml ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค(ํผ์ฒ๋ง ์ถ๊ฐํ์ ๋ ๋ฉ๋๋ค)[package] name = "fibonacci" version = "0.1.0" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [lib] name = "fibonacci" crate-type = ["cdylib"] [dependencies.pyo3] version = "0.23.3" features = ["extension-module"]์ด์ ํจํค์ง๊ฐ ์ ๋น๋๋๊ณ ํ์ด์ฌ์์๋ ํจ์ ํธ์ถ์ด ์ ์์ ์ผ๋ก ๊ธฐ๋ฅํฉ๋๋ค. Python 3.12.6 (main, Sep 15 2024, 11:07:06) [Clang 15.0.0 (clang-1500.3.9.4)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import fibonacci >>> fibonacci.run(3) 2 >>> fibonacci.run(3000)
- 1
- 1
- 100