PyCon APAC 2013 カンファレンスデイ1 感想 & メモ
自分の見たセションについての感想と残したメモを
基調講演
スピーカー: georg brandl さん
内容:
このプロジェクトについて.
中性子の実験に使うデバイスの制御にPythonを使ってるらしい.
PyEval_SetTrace()
を使うとデバッグが簡単らしい.
おとなしく同時翻訳聞けばよかった; ;
パッケージの今と未来
スピーカー: aodagさん
内容: Pythonのパッケージの内容を詳しく説明してくださった.
pip とか easy_install とか virtulenv とかの説明
setuptools, distutil, wheel とかのパッケージ作成
メモ:
パッケージングの基礎知識
distutils
setup.py
pypa python package authorities
virtualenv
- setuptools, pip入れてくれる
setuptools/distribute
distributeはsetuptoolsに取り込まれた
ライブラリの依存関係
entry_point
setup.cfg
wheel
distlib
今はsetuptools setup.py
wheelはデプロイ用
sphixと僕
スピーカー: tell_kさん
内容:
Sphixでのドキュメントの作り方/機能を初心者にもわかりやすく説明してくださった.
メモ:
reveal.js
sphinx-apidoc
Cassandra for Pythonistas
スピーカー: sebastibeさん
(動画)http://www.youtube.com/watch?v=cWLVB1qnFB4
How the Mock library helps me developing client-side applications
スピーカー: clsungさん
内容:
python3.3で登場したらしいunittest.mockについて.
メモ:
Mock用ライブラリ
Flexmock
etc...
python3.3
- unittest.mock
patch
実践! Python C拡張モジュール開発
スピーカー: mopemopeさん
内容:
C-APIを使ったC拡張子モジュールの作り方,Tips, パフォーマンスについて.
メモ:
Cで書く意義
Cのライブラリを呼ぶならctypes
しかし,ctypesは所詮インタプリタ
Cythonは学習コストが高い
PyCFunction
開発に必要なもの
プロジェクト構成(jegaプロジェクト)
src
Cコード
Cヘッダ
jega
- pythonコード
tests
- test
lib
- 3rdパーティーのライブラリ
ビルド方法
setup.pyでできる.(Distutils)
Makefileはいらない.
setup.pyの書き方
- util関数を書いておく
ソース・ファイル
1機能毎に分ける
ヘッダとソースは対
Tips
Noneを返す場合
- Py_RETURN_NONE マクロ
C/APIドキュメントにある返り値や説明を必ず読む
+ リファレンスカウンタ
* Py_INCREFして返す * 呼び出し側でPy_DECREF
Cythonによる拡張モジュール開発
スピーカー: Atsuo Ishimoto さん
内容:
cythonを使った拡張モジュールの作り方,書き方の違い(pythonとして宣言するか,Cとして宣言するか)によるパフォーマンスの違いなど.
メモ:
型には気をつけたほうが良さそう
コード最適化をしてくれる
既存のライブラリを使うこともできる
cimportで定義済みライブラリ
STLも行ける
numpy, openMPも使える
C/C++のデータ型も使える
GIL制御
C++サポート
distutils : language = c++
cythonにくわせるとCソースファイルが生成
Distutilsでビルドができる
-
form Cython.Build import cythonize
-
pyximport モジュール
1~3割高速化
型チェックなどが入るとCythonでも早くならない
- データ型をはっきりさせてあげる(10倍早くなった!)
Pythonの関数オブジェクトは重い
- C言語の関数を定義してあげればよい=cdef(超早くなる)
出来るだけC/C++の関数を呼び出す
cpdef
gdb使える
about mock
スピーカー:podhmoさん
内容:
ubittest.mockの中身まで詳しく説明してくださった.実装できそうですね?って言ってた.
動作原理からやってはいけないこととかまで.
メモ:
3.3 から
基本的には,mock.patch()
enter, exit
tempfile
__callFUT
spec / autospec
specをつけましょう