八月份 Taipei.py 聚會
Friday, August 30, 2013 » taipei.py, Authored by Lucemia
Python Development Sprint Invitation by Tim
- PyCon要辦Sprint了,想知道Srpint是什麼嗎?!一起寫Code!
- 徵求專案,歡迎已經有一定規模的專案投稿link
主題演講: CPython 原始碼解析 by 果凍
這次我要演講的主題是 CPython 如何執行 python code,焦點主要是放在 vm 部分。目前暫無考慮編譯部分。因為是講較底層的東西,因此整個演講會有不少有關 C 語言的東西。另外,也會示範如何利用 gdb 來 了解 python 運作。示範環境在 ubuntu 下。
演講大綱:
- code object 與 frame object 簡介
- cpython op code 簡介
- 示範如何利用 gdb 來幫助我們了解 python 執行
- cpython 如何執行 op code
果凍示範了如何使用dis
module 取得 python 程式碼的 opcode. 可以更容易瞭解Python 底層的實作.
聽了拿來試幾個例子:
- stackoverflow 上看過(What is the preferred syntax for initializing a dict?)有人討論
x = dict()
與x = {}
會有效能差異, 立馬來測一下
It works for all kinds of keys, so you can, for example, say {1: 'one', 2: 'two'}. The second variant only works for (some) string keys. Using different kinds of syntax depending on the type of the keys would be an unnecessary inconsistency.
It is faster:
測試結果
1 2 3 4 | $ python -m timeit "dict(a='value', another='value')"
1000000 loops, best of 3: 0.79 usec per loop
$ python -m timeit "{'a': 'value','another': 'value'}"
1000000 loops, best of 3: 0.305 usec per loop
|
x=dict()
會比x={}
慢上兩倍, 實際用 dis 解析:
1 2 3 4 5 6 7 | import dis
def x1():
x = dict()
def x2():
x = {}
|
dis.dis(x1)
>>> dis.dis(x1)
2 0 LOAD_GLOBAL 0 (dict)
3 CALL_FUNCTION 0
6 STORE_FAST 0 (x)
9 LOAD_CONST 0 (None)
12 RETURN_VALUE
dis.dis(x2)
>>> dis.dis(x2)
2 0 BUILD_MAP 0
3 STORE_FAST 0 (x)
6 LOAD_CONST 0 (None)
9 RETURN_VALUE
可以看得出來很明顯的 x = dict()
多執行了一行 CALL_FUNCTION
.可以瞭解額外的執行負擔的來源.雖然不能直接從op code的長短推斷執行效率,但對於在寫code時選擇有一些參考的工具.
Lightening Talk 1 - 使用Blender和簡易的Python Script模擬出如同電影裡的GUI介面動畫_^ by DC
請到果凍的學弟, 一名大一新生! 來introduce Blender, 國中!時受到WANTED 的啓發開始做了第一個Blender動畫. 介紹了很多學生時代使用Blender做出來的影片, 作品集看起來效果很驚人! 以後學生就有能力做很好的3D動畫了!!
About Blender:
- Open source
- Cross Platform
- GPU-accelerated
- Python Scripting Support
- Official Open-Movie Projects
Use python Script in Blender:
可以透過Python Script來做一些Blender裡面不支援的動畫效果. 或是減少很多重複的工作(如focus, defocus的效果). 以及作分鏡.
完成的的影片 All or Nothing
Lightening Talk 2 - Taipei.py Logo 的故事 by Joe
不辭風雨從台南上來的Joe, 帶給大家 Taipei.py Logo的故事. 劇情曲折, 十分精彩, 內容不輸"少年Py的奇幻漂流,有機會一定要親耳聽聽看.
Lightening Talk 3 - mynt by David
如何使用 Mynt 做出Taiwan.py的網站 link
Taipei.py 以後會用MyNt做會後報導
- 很好寫, 聽完Taipei.py 的活動就寫完了 (比什麼Log什麼Down還好寫!)
- 大家加入一起寫! (聽眾心得, 講者補充… etc)
- what is mynt
- how to use mynt
- usage (mynt watch
, mynt serve
)
- markdown, yaml
- Template (jinja2)
- how to create taiwan.py
Taiwan.py
- 每個人都可以加入 (Fork me on Github)
- 整合資源 (like PyLadies)
PyCon 2014 PR 組徵人
- 參加活動, 宣傳Python
- 維護 taiwan.py Website
- 跑腿, 想idea (做名片) (Joe 要不要再投稿一次?)
Lightening Talk 4 - NextBio Python Open Source by 亮亮
- Bio有超多 BIG DATA
- BIO Python的問題
- 缺Doc
- 光FILE I/O就很困難
- 很慢
- 使用一些新的 Module (numpy, panda, PySAM)
- 目標提供 Uniform Interface for Basic Bio Object
- 參加Sprint, 歡迎大家
Lightening Talk 5 - Whois Call 徵人
- 徵 Web 主管 (一人)
謝謝講者們的精彩演講!! 這次有五場Lightening Talk實在太充實啦, 讓我們期待九月份的活動:
- 九月 Taipei.py
- Django Workshop,
- Python for Google Cloud