Movatterモバイル変換


[0]ホーム

URL:


Uploaded byfate_fox
PPTX, PDF3,454 views

Boost.python

Embed presentation

Download to read offline
Boost.Pythonの有能性
目次自己紹介PythonについてPythonとはBoost::Pythonの使い方C++からPythonへPythonからC++へBoost::Pythonの有能性まとめ
自己紹介Twitter ID: fate_fox本名:安江 直樹職業:高校3年生主な言語:C ,C++ , Python etc… 興味がある分野:自然言語処理,人工知能,グリッドコンピューティング,クラウド,並列処理 etc….
今回の発表を提案してくださったのは、Bleis氏デス!このアイコン⇒
Pythonについて
Pythonとはなにか
撫子
というのは私の妄想です。
正しくはこちら ⇛
Pythonの歴史Python(パイソン)は、オランダ人のグイド・ヴァンロッサムが作ったオープンソースのプログラミング言語。オブジェクト指向スクリプト言語の一種であり、Perlとともに欧米で広く普及している。イギリスのテレビ局 BBC が製作したコメディ番組『空飛ぶモンティ・パイソン』にちなんで名付けられた。Pythonは英語で爬虫類のニシキヘビの意味で、Python言語のマスコットやアイコンとして使われることがある。Pythonは汎用の高水準言語である。プログラマの生産性とコードの信頼性を重視して設計されており、核となるシンタックスおよびセマンティクスは必要最小限に抑えられている反面、利便性の高い大規模な標準ライブラリを備えている。Unicodeによる文字列操作をサポートしており、日本語処理も標準で可能である。 多くのプラットフォームをサポートしており(動作するプラットフォーム)、また、豊富なドキュメント、豊富なライブラリがあることから、産業界でも利用が増えつつある。….
By Wiki
要点を纏めると
Pythonを知らない人のためにPythonは覚えやすく使いやすい!覚えやすいように文法がシンプル!曖昧さをなくすためにインデントなどにうるさい!豊富なライブラリやモジュールで機能を拡張できる!Guidovan Rossum氏が開発したインタプリタ言語!ソースが読みやすい!他言語より予約語(31語)が少ない!「Python2.6より」
Pythonで有名な物Google App EnginenGoogleが提供するWebアプリケーション開発環境XenPythonが使われた1台で複数台のOSが稼働できる有名な仮想ソフトウェア(OCamlも使われてるらしい さすが関数型帝国!)MAYACGを作るアプリケーション 機能などの拡張にPythonを使用Zope/PloneWebアプリケーション鯖 Pythonで書かれてます。DjangoWebフレームワーク Zopeと似てる
それでは本題
Boost::Pythonの使い方
Boost::Pythonを使うには自分の環境では、 Boost-1.42.0 を利用してます。言い訳:1.46.0などでやろうとしたんですが、Boost自体がうまくビルドが、 できないのかわからないんですが 全然利用できなくて 1.42.0あたりが安定してる模様なのでお勧め(最新バージョンが一番いいんですがね)色々と言い訳を連ねたいですがこれ以上続けると ⇛
と,“なのは”さんからSLBあたりをブッパされそうな気がするのd(ry
はじめに
C++からPythonへC++で書かれた関数やクラスの資源をPythonの資源として利用するために、拡張モジュールとして、コンパイルする方法。
C++でBoost.Pythonをincludeする。C++で関数やクラスを書く。マクロを使ってその関数やクラスをラッピングする。コンパイルする(私はVCのコンパイラでコンパイルしました(真っ黒い画面で)).pydっていう未知の生命体が出てくる。その未知の生命体をC:\python27\DLLs に投下インタラクティブシェルを起動Import 利用できた!
 実践
// 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);}
Python 2.7.1 (r271:86832, Nov 27 2010, 18:30:46) [MSC v.1500 32 bit (Intel)] on win32Type "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!>>>
//  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”という名前のメソッド として公開する }
//  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);               }
PythonからC++へPythonのコード資源を直接C++のコード資源に投げ込みます。詳細的には実践で説明します。
実  践
//  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!')\n"     "cpp() \n"     "value=2**20\n" , ns);   //  "__main__"モジュールの名前空間で定義した変数の値を取り出す int v = boost::python::extract<int>(ns["value"]);   std::cout << v << std::endl;   //  Pythonインタプリタの終了処理を行う Py_Finalize(); }
Boost::Pythonの有能性
C++から見たメリットC++で書かれた関数やクラスの資源をラッピングできる。拡張モジュールとしてファイルを出力できる。そのままPythonにimportできるから、Pythonへの実装が容易
Pythonから見たメリットC++のコードにそのままPythonのコードを書ける。C++上でPythonインタプリタが実行出来る。
 要点を     纏めると(2回目)
とても実用的!!⇑みんなの願望と夢
ということで
僕と契約してBoost.Pythonerになってよ!
ご清聴ありがとうございました!

Recommended

PDF
Wrapping a C++ library with Cython
PDF
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
PDF
NumPyが物足りない人へのCython入門
PDF
Cython intro prelerease
PPTX
Polyphony IO まとめ
 
PDF
PyCon2020 Pythonで競プロをしよう! 〜入門者が知っておくべき高速化Tips〜
PDF
20170131 python3 6 PEP526
PDF
Cython ことはじめ
PDF
Pythonと型チェッカー
PPTX
2017/12/21 虎の穴 Python勉強会
PDF
Python パッケージの影響を歴史から理解してみよう!
PDF
Boost tour 1.60.0 merge
PDF
C++14 Overview
PDF
PEP8を読んでみよう
PPTX
Polyphony の並列化
 
PDF
Python入門
PDF
L-1グランプリ "D言語"
PDF
Python 機械学習プログラミング データ分析ライブラリー解説編
PDF
D言語にまだ入っていない新機能 (Dの日#2)
ODP
Introduction of Python
PDF
C#勉強会
PPTX
数値計算のための Python + FPGA
 
PPTX
Apilecture for 2014/02/22 at shannonlab
PDF
boost tour 1.48.0 all
PDF
LLdeade Python Language Update
PDF
PyCon JP 2014 plone terada
PPTX
Boost.python
PPTX
Boost.Python: C++ and Python Integration
PDF
Interfacing C/C++ and Python with SWIG
PDF
Boost.Python - domesticating the snake

More Related Content

PDF
Wrapping a C++ library with Cython
PDF
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
PDF
NumPyが物足りない人へのCython入門
PDF
Cython intro prelerease
PPTX
Polyphony IO まとめ
 
PDF
PyCon2020 Pythonで競プロをしよう! 〜入門者が知っておくべき高速化Tips〜
PDF
20170131 python3 6 PEP526
PDF
Cython ことはじめ
Wrapping a C++ library with Cython
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
NumPyが物足りない人へのCython入門
Cython intro prelerease
Polyphony IO まとめ
 
PyCon2020 Pythonで競プロをしよう! 〜入門者が知っておくべき高速化Tips〜
20170131 python3 6 PEP526
Cython ことはじめ

What's hot

PDF
Pythonと型チェッカー
PPTX
2017/12/21 虎の穴 Python勉強会
PDF
Python パッケージの影響を歴史から理解してみよう!
PDF
Boost tour 1.60.0 merge
PDF
C++14 Overview
PDF
PEP8を読んでみよう
PPTX
Polyphony の並列化
 
PDF
Python入門
PDF
L-1グランプリ "D言語"
PDF
Python 機械学習プログラミング データ分析ライブラリー解説編
PDF
D言語にまだ入っていない新機能 (Dの日#2)
ODP
Introduction of Python
PDF
C#勉強会
PPTX
数値計算のための Python + FPGA
 
PPTX
Apilecture for 2014/02/22 at shannonlab
PDF
boost tour 1.48.0 all
PDF
LLdeade Python Language Update
PDF
PyCon JP 2014 plone terada
Pythonと型チェッカー
2017/12/21 虎の穴 Python勉強会
Python パッケージの影響を歴史から理解してみよう!
Boost tour 1.60.0 merge
C++14 Overview
PEP8を読んでみよう
Polyphony の並列化
 
Python入門
L-1グランプリ "D言語"
Python 機械学習プログラミング データ分析ライブラリー解説編
D言語にまだ入っていない新機能 (Dの日#2)
Introduction of Python
C#勉強会
数値計算のための Python + FPGA
 
Apilecture for 2014/02/22 at shannonlab
boost tour 1.48.0 all
LLdeade Python Language Update
PyCon JP 2014 plone terada

Viewers also liked

PPTX
Boost.python
PPTX
Boost.Python: C++ and Python Integration
PDF
Interfacing C/C++ and Python with SWIG
PDF
Boost.Python - domesticating the snake
PPTX
MS COCO Dataset Introduction
PPS
Example Projectile Motion
PDF
Windows で動かす TensorFlow
Boost.python
Boost.Python: C++ and Python Integration
Interfacing C/C++ and Python with SWIG
Boost.Python - domesticating the snake
MS COCO Dataset Introduction
Example Projectile Motion
Windows で動かす TensorFlow

Similar to Boost.python

KEY
ひのきのぼうだけで全クリ目指す
PDF
Python physicalcomputing
PDF
Introduction to Numpy (and Python) [JPN]
PPTX
開発環境構築からはじめるPython VisualStudio Codeとpipenvで始めるpython
PDF
Boost.Flyweight
PDF
次世代言語 Python による PyPy を使った次世代の処理系開発
PDF
Python & PyConJP 2014 Report
PDF
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
PDF
「Python言語」はじめの一歩 / First step of Python
PDF
Pyconjp2014_implementations
PDF
Python Kyoto study
PDF
Introduction Pycon2010
PDF
Pythonで始めるDropboxAPI
PDF
Boost tour 1_40_0
PPT
Python languageupdate (2004)
PDF
PyPy 紹介
KEY
Hello World Python featuring GAE
PPTX
Wacode5thでのpython講義資料
DOCX
Boost勉強会 #10 ディスカッションまとめ
KEY
Pythonについて
ひのきのぼうだけで全クリ目指す
Python physicalcomputing
Introduction to Numpy (and Python) [JPN]
開発環境構築からはじめるPython VisualStudio Codeとpipenvで始めるpython
Boost.Flyweight
次世代言語 Python による PyPy を使った次世代の処理系開発
Python & PyConJP 2014 Report
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
「Python言語」はじめの一歩 / First step of Python
Pyconjp2014_implementations
Python Kyoto study
Introduction Pycon2010
Pythonで始めるDropboxAPI
Boost tour 1_40_0
Python languageupdate (2004)
PyPy 紹介
Hello World Python featuring GAE
Wacode5thでのpython講義資料
Boost勉強会 #10 ディスカッションまとめ
Pythonについて

Boost.python


[8]ページ先頭

©2009-2025 Movatter.jp