Submit Search
Upload
Boost.python
•
Download as PPTX, PDF
•
4 likes
•
2,312 views
F
fate_fox
Follow
Boost.Pythonの有能性
Read less
Read more
Technology
Report
Share
Report
Share
1 of 39
Download now
Recommended
Boost.python
Boost.python
fate_fox
20170131 python3 6 PEP526
20170131 python3 6 PEP526
masahitojp
Python 3.6 リリースパーティー 発表資料
Python 3.6 リリースパーティー 発表資料
Atsuo Ishimoto
PyCon2020 Pythonで競プロをしよう! 〜入門者が知っておくべき高速化Tips〜
PyCon2020 Pythonで競プロをしよう! 〜入門者が知っておくべき高速化Tips〜
Kosaku Ono
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
kiki utagawa
Introduction to cython
Introduction to cython
Atsuo Ishimoto
NumPyが物足りない人へのCython入門
NumPyが物足りない人へのCython入門
Shiqiao Du
Python パッケージの影響を歴史から理解してみよう!
Python パッケージの影響を歴史から理解してみよう!
Kir Chou
Recommended
Boost.python
Boost.python
fate_fox
20170131 python3 6 PEP526
20170131 python3 6 PEP526
masahitojp
Python 3.6 リリースパーティー 発表資料
Python 3.6 リリースパーティー 発表資料
Atsuo Ishimoto
PyCon2020 Pythonで競プロをしよう! 〜入門者が知っておくべき高速化Tips〜
PyCon2020 Pythonで競プロをしよう! 〜入門者が知っておくべき高速化Tips〜
Kosaku Ono
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
kiki utagawa
Introduction to cython
Introduction to cython
Atsuo Ishimoto
NumPyが物足りない人へのCython入門
NumPyが物足りない人へのCython入門
Shiqiao Du
Python パッケージの影響を歴史から理解してみよう!
Python パッケージの影響を歴史から理解してみよう!
Kir Chou
PEP8を読んでみよう
PEP8を読んでみよう
2bo 2bo
2017/12/21 虎の穴 Python勉強会
2017/12/21 虎の穴 Python勉強会
虎の穴 開発室
Cython intro prelerease
Cython intro prelerease
Shiqiao Du
Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編
Etsuji Nakai
Wrapping a C++ library with Cython
Wrapping a C++ library with Cython
fuzzysphere
Apilecture for 2014/02/22 at shannonlab
Apilecture for 2014/02/22 at shannonlab
Yutaka Kobayshi
D言語にまだ入っていない新機能 (Dの日#2)
D言語にまだ入っていない新機能 (Dの日#2)
tom-tan
Polyphony IO まとめ
Polyphony IO まとめ
ryos36
C#勉強会
C#勉強会
hakugakucafe
Pythonと型チェッカー
Pythonと型チェッカー
Tetsuya Morimoto
Cython ことはじめ
Cython ことはじめ
gion_XY
L-1グランプリ "D言語"
L-1グランプリ "D言語"
det coder
Python と型ヒント (Type Hints)
Python と型ヒント (Type Hints)
Tetsuya Morimoto
数値計算のための Python + FPGA
数値計算のための Python + FPGA
ryos36
Python入門
Python入門
Shohei Okada
なぜ科学計算にはPythonか?
なぜ科学計算にはPythonか?
Aki Ariga
Goroutineと channelから はじめるgo言語
Goroutineと channelから はじめるgo言語
Takuya Ueda
LLdeade Python Language Update
LLdeade Python Language Update
Atsushi Shibata
PyCon JP 2014 plone terada
PyCon JP 2014 plone terada
Manabu Terada
Introduction of Python
Introduction of Python
Tomoya Nakayama
Python 学習教材 (~299ページ)
Python 学習教材 (~299ページ)
Jun MITANI
.NETの自作ツール公開手段
.NETの自作ツール公開手段
Pierre3 小林
More Related Content
What's hot
PEP8を読んでみよう
PEP8を読んでみよう
2bo 2bo
2017/12/21 虎の穴 Python勉強会
2017/12/21 虎の穴 Python勉強会
虎の穴 開発室
Cython intro prelerease
Cython intro prelerease
Shiqiao Du
Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編
Etsuji Nakai
Wrapping a C++ library with Cython
Wrapping a C++ library with Cython
fuzzysphere
Apilecture for 2014/02/22 at shannonlab
Apilecture for 2014/02/22 at shannonlab
Yutaka Kobayshi
D言語にまだ入っていない新機能 (Dの日#2)
D言語にまだ入っていない新機能 (Dの日#2)
tom-tan
Polyphony IO まとめ
Polyphony IO まとめ
ryos36
C#勉強会
C#勉強会
hakugakucafe
Pythonと型チェッカー
Pythonと型チェッカー
Tetsuya Morimoto
Cython ことはじめ
Cython ことはじめ
gion_XY
L-1グランプリ "D言語"
L-1グランプリ "D言語"
det coder
Python と型ヒント (Type Hints)
Python と型ヒント (Type Hints)
Tetsuya Morimoto
数値計算のための Python + FPGA
数値計算のための Python + FPGA
ryos36
Python入門
Python入門
Shohei Okada
なぜ科学計算にはPythonか?
なぜ科学計算にはPythonか?
Aki Ariga
Goroutineと channelから はじめるgo言語
Goroutineと channelから はじめるgo言語
Takuya Ueda
LLdeade Python Language Update
LLdeade Python Language Update
Atsushi Shibata
PyCon JP 2014 plone terada
PyCon JP 2014 plone terada
Manabu Terada
Introduction of Python
Introduction of Python
Tomoya Nakayama
What's hot
(20)
PEP8を読んでみよう
PEP8を読んでみよう
2017/12/21 虎の穴 Python勉強会
2017/12/21 虎の穴 Python勉強会
Cython intro prelerease
Cython intro prelerease
Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編
Wrapping a C++ library with Cython
Wrapping a C++ library with Cython
Apilecture for 2014/02/22 at shannonlab
Apilecture for 2014/02/22 at shannonlab
D言語にまだ入っていない新機能 (Dの日#2)
D言語にまだ入っていない新機能 (Dの日#2)
Polyphony IO まとめ
Polyphony IO まとめ
C#勉強会
C#勉強会
Pythonと型チェッカー
Pythonと型チェッカー
Cython ことはじめ
Cython ことはじめ
L-1グランプリ "D言語"
L-1グランプリ "D言語"
Python と型ヒント (Type Hints)
Python と型ヒント (Type Hints)
数値計算のための Python + FPGA
数値計算のための Python + FPGA
Python入門
Python入門
なぜ科学計算にはPythonか?
なぜ科学計算にはPythonか?
Goroutineと channelから はじめるgo言語
Goroutineと channelから はじめるgo言語
LLdeade Python Language Update
LLdeade Python Language Update
PyCon JP 2014 plone terada
PyCon JP 2014 plone terada
Introduction of Python
Introduction of Python
Similar to Boost.python
Python 学習教材 (~299ページ)
Python 学習教材 (~299ページ)
Jun MITANI
.NETの自作ツール公開手段
.NETの自作ツール公開手段
Pierre3 小林
Pythonによる機械学習入門〜基礎からDeep Learningまで〜
Pythonによる機械学習入門〜基礎からDeep Learningまで〜
Yasutomo Kawanishi
osakapy 2014.05 LT
osakapy 2014.05 LT
Hattori Hideo
Python の基本
Python の基本
kunihikokaneko1
cs-10. Python の基礎(オブジェクト,メソッド,引数,文字列)
cs-10. Python の基礎(オブジェクト,メソッド,引数,文字列)
kunihikokaneko1
ひのきのぼうだけで全クリ目指す
ひのきのぼうだけで全クリ目指す
AromaBlack
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
Takanori Suzuki
Study3 boost
Study3 boost
Kohsuke Yuasa
PostgreSQLとpython
PostgreSQLとpython
Soudai Sone
「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of Python
Takanori Suzuki
Pythonはどうやってlen関数で長さを手にいれているの?
Pythonはどうやってlen関数で長さを手にいれているの?
Takayuki Shimizukawa
PythonでPodcastを聴く
PythonでPodcastを聴く
Masato Fujitake
Python standard 2022 Spring
Python standard 2022 Spring
anyakichi
Django_fukuoka
Django_fukuoka
ShuyaMotouchi1
Django_Fukuoka
Django_Fukuoka
Shuya Motouchi
RoboticsとC++@歌舞伎座.tech#8「C++初心者会」
RoboticsとC++@歌舞伎座.tech#8「C++初心者会」
Takashi Ogura
rpi_handson_2.5
rpi_handson_2.5
teruyaono1
最近思った機械学習(PyTorch)のベストプラクティス
最近思った機械学習(PyTorch)のベストプラクティス
Masato Fujitake
画像処理でのPythonの利用
画像処理でのPythonの利用
Yasutomo Kawanishi
Similar to Boost.python
(20)
Python 学習教材 (~299ページ)
Python 学習教材 (~299ページ)
.NETの自作ツール公開手段
.NETの自作ツール公開手段
Pythonによる機械学習入門〜基礎からDeep Learningまで〜
Pythonによる機械学習入門〜基礎からDeep Learningまで〜
osakapy 2014.05 LT
osakapy 2014.05 LT
Python の基本
Python の基本
cs-10. Python の基礎(オブジェクト,メソッド,引数,文字列)
cs-10. Python の基礎(オブジェクト,メソッド,引数,文字列)
ひのきのぼうだけで全クリ目指す
ひのきのぼうだけで全クリ目指す
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
Study3 boost
Study3 boost
PostgreSQLとpython
PostgreSQLとpython
「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of Python
Pythonはどうやってlen関数で長さを手にいれているの?
Pythonはどうやってlen関数で長さを手にいれているの?
PythonでPodcastを聴く
PythonでPodcastを聴く
Python standard 2022 Spring
Python standard 2022 Spring
Django_fukuoka
Django_fukuoka
Django_Fukuoka
Django_Fukuoka
RoboticsとC++@歌舞伎座.tech#8「C++初心者会」
RoboticsとC++@歌舞伎座.tech#8「C++初心者会」
rpi_handson_2.5
rpi_handson_2.5
最近思った機械学習(PyTorch)のベストプラクティス
最近思った機械学習(PyTorch)のベストプラクティス
画像処理でのPythonの利用
画像処理でのPythonの利用
Boost.python
1.
Boost.Pythonの有能性
2.
3.
目次 自己紹介 Pythonについて
Pythonとは Boost::Pythonの使い方 C++からPythonへ PythonからC++へ Boost::Pythonの有能性 まとめ
4.
自己紹介 Twitter ID:
fate_fox 本名:安江 直樹 職業:高校3年生 主な言語:C ,C++ , Python etc… 興味がある分野:自然言語処理,人工知能,グリッドコンピューティング,クラウド,並列処理 etc….
5.
今回の発表を提案してくださったのは、 Bleis氏デス! このアイコン⇒
6.
Pythonについて
7.
Pythonとはなにか
8.
撫子
9.
というのは私の妄想です。
10.
正しくはこちら ⇛
11.
Pythonの歴史 Python(パイソン)は、オランダ人のグイド・ヴァンロッサムが作ったオープンソースのプログラミング言語。オブジェクト指向スクリプト言語の一種であり、Perlとともに欧米で広く普及している。イギリスのテレビ局 BBC
が製作したコメディ番組『空飛ぶモンティ・パイソン』にちなんで名付けられた。Pythonは英語で爬虫類のニシキヘビの意味で、Python言語のマスコットやアイコンとして使われることがある。Pythonは汎用の高水準言語である。プログラマの生産性とコードの信頼性を重視して設計されており、核となるシンタックスおよびセマンティクスは必要最小限に抑えられている反面、利便性の高い大規模な標準ライブラリを備えている。Unicodeによる文字列操作をサポートしており、日本語処理も標準で可能である。 多くのプラットフォームをサポートしており(動作するプラットフォーム)、また、豊富なドキュメント、豊富なライブラリがあることから、産業界でも利用が増えつつある。….
12.
By Wiki
13.
要点を纏めると
14.
Pythonを知らない人のために Pythonは 覚えやすく使いやすい!
覚えやすいように文法がシンプル! 曖昧さをなくすためにインデントなどにうるさい! 豊富なライブラリやモジュールで機能を拡張できる! Guidovan Rossum氏が開発したインタプリタ言語! ソースが読みやすい! 他言語より予約語(31語)が少ない!「Python2.6より」
15.
Pythonで有名な物 Google App
Enginen Googleが提供するWebアプリケーション開発環境 Xen Pythonが使われた1台で複数台のOSが稼働できる有名な仮想ソフトウェア(OCamlも使われてるらしい さすが関数型帝国!) MAYA CGを作るアプリケーション 機能などの拡張にPythonを使用 Zope/Plone Webアプリケーション鯖 Pythonで書かれてます。 Django Webフレームワーク Zopeと似てる
16.
それでは本題
17.
Boost::Pythonの使い方
18.
Boost::Pythonを使うには 自分の環境では、 Boost-1.42.0
を利用してます。 言い訳:1.46.0などでやろうとしたんですが、Boost自体がうまくビルドが、 できないのかわからないんですが 全然利用できなくて 1.42.0あたりが安定してる模様なのでお勧め(最新バージョンが一番いいんですがね) 色々と言い訳を連ねたいですがこれ以上続けると ⇛
19.
20.
と,“なのは”さんからSLBあたりをブッパされそうな気がするのd(ry
21.
はじめに
22.
C++からPythonへ C++で書かれた関数やクラスの資源をPythonの資源 として利用するために、
拡張モジュールとして、 コンパイルする方法。
23.
C++でBoost.Pythonをincludeする。 C++で関数やクラスを書く。 マクロを使ってその関数やクラスをラッピングする。
コンパイルする(私はVCのコンパイラでコンパイルしました(真っ黒い画面で)) .pydっていう未知の生命体が出てくる。 その未知の生命体をC:ython27LLs に投下 インタラクティブシェルを起動 Import 利用できた!
24.
実践
25.
// sample1.cpp //関数のラッピング #define
BOOST_PYTHON_STATIC_LIB // Boost.Pythonライブラリを静的にリンクする #include <string> #include <boost/python.hpp> std::string hello_world(void) { return "Hellow, world!"; } BOOST_PYTHON_MODULE(sample1) // sample1はpython拡張Moduleの名前になる { // C++のhello_world関数を、" hello_world_python"という名前でPythonに公開する boost::python::def ("hello_world_python", &hello_world); }
26.
Python 2.7.1 (r271:86832,
Nov 27 2010, 18:30:46) [MSC v.1500 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import sample1 >>> dir (sample1) ['__doc__', '__file__', '__name__', '__package__', 'hello_world_python'] >>> sample1.hello_world_python <Boost.Python.function object at 0x00E43990> >>> sample1.hello_world_python() 'Hellow, world!' >>> print sample1.hello_world_python() Hellow, world! >>>
27.
// sample2.cpp
//クラスのラッピング #define BOOST_PYTHON_STATIC_LIB / / Boost.Pythonライブラリを静的にリンクする #include <boost/python.hpp> structCValue { intgetValue(void) const { return value; } void setValue(int value) { this->value = value; } int value; }; BOOST_PYTHON_MODULE(sample2) // sample2はpython拡張モジュールの名前になる { // C++のCValueクラス(構造体)を、”PValue”という名前で pythonに公開する boost::python::class_<CValue>("PValue") .def(“get”, &CValue::getValue) ; // getValueメンバ関数を、”get”という名前のメソッド として公開する .def("set", &CValue::setValue); // setValueメンバ関数を、”set”という名前のメソッド として公開する }
28.
// sample3.cpp
//C++のアクセサをPythonのプロパティに公開 #define BOOST_PYTHON_STATIC_LIB // Boost.Pythonライブラリを静的にリンクする #include <boost/python.hpp> structCValue { intgetValue(void) const { return value; } void setValue(int value) { this->value = value; } int value; }; BOOST_PYTHON_MODULE(sample3) // sample3は python拡張モジュールの名前になる { // C++のCValueクラス(構造体)を、”PValue”という名前で pythonに公開する boost::python::class_<CValue>("PValue") //“value”プロパティは読み書き可 .add_property("value", &CValue::getValue, &CValue::setValue) //“rvalue”プロパティは読み取り専用 .add_property("rvalue", &CValue::getValue); }
29.
PythonからC++へ Pythonのコード資源を直接C++のコード資源に投げ込みます。詳細的には実践で説明します。
30.
実 践
31.
// sample4.cpp
//C++上でPythonインタプリタの実行 #define BOOST_PYTHON_STATIC_LIB // Boost.Pythonライブラリを静的にリンクする #include <iostream> #include <boost/python.hpp> void c_plus_plus(void) { std::cout << "C++" << std::endl; } int main() { // Pythonインタプリタを初期化する Py_Initialize(); // "__main__"モジュールをインポートする boost::python::object module = boost::python::import("__main__"); // "__main__"モジュールの名前空間でコードを実行する boost::python::object ns = module.attr("__dict__"); // "cpp"という名前で Pythonのインタプリタから呼び出す ns["cpp"] = &c_plus_plus; // Pythonのインタプリタを実行する boost::python::exec( "print('Hello, World!')" "cpp() " "value=2**20" , ns); // "__main__"モジュールの名前空間で定義した変数の値を取り出す int v = boost::python::extract<int>(ns["value"]); std::cout << v << std::endl; // Pythonインタプリタの終了処理を行う Py_Finalize(); }
32.
Boost::Pythonの有能性
33.
C++から見たメリット C++で書かれた関数やクラスの資源をラッピングできる。 拡張モジュールとしてファイルを出力できる。
そのままPythonにimportできるから、Pythonへの実装が容易
34.
Pythonから見たメリット C++のコードにそのままPythonのコードを書ける。 C++上でPythonインタプリタが実行出来る。
35.
要点を 纏めると(2回目)
36.
とても実用的!! ⇑みんなの願望と夢
37.
ということで
38.
僕と契約して Boost.Pythonerに なってよ!
39.
ご清聴 ありがとうございました!
Download now