Monthly Archives: February 2009

再見了! Plone

我花了一天的時間寫了一個小爬蟲爬了Plone的文章,然後用Joomla的XML RPC API傳文章上去,最後終於完成了,該是跟Plone說再見的時候了 Continue reading

Posted in 中文文章, 網站 | Tagged , , | 2 Comments

第一次遇到Deadlock

凡事都要來個第一次,這兩天遇到一個deadlock,是我第一次遇到deadlock,其實很多deadlock都很明顯可以避免掉,但有些就不明顯,這次遇到的deadlock,是因為正在開發一個DirectShow的應用程式,我使用Python把核心部份寫好包裝成Extension給Python使用來加速開發,不然每次光等編譯就等到睡著 我使用DirectShow 的 Sample Grabber filter來抓取從DirectShow播放出來的音樂,DirectShow的graph會建立一個thread來處理事情,而它使用一個callback來回傳資料,好死不死,我的程式從Python的程式碼的Main thread呼叫graph的stop,但是stop似乎會等callback回傳,再來又好死不死的,callback因為要把資料丟回Python,要求Python的GIL,所謂的GIL就是Python直譯器的lock,整個Python行程只有一個,所以就變成下列情況 Main thread (hold GIL) -> call stop(Wait for callback) -> Callback acquire GIL -> GIL….(Hold by main thread) 囧… 這幾個笨蛋(設計的人比較笨),就這樣一直癡癡地等下去,等到天荒地老都沒有人會理他們,這真是悲慘….,所以在寫multi-threading的程式時一定要特別小心,明顯的deadlock當然是很容易避免,但是像這種文件上沒說清楚,隱涵著lock,又繞了一圈的情況,就很難一開始想到

Posted in Python, 中文文章, 英文 | Tagged , | 3 Comments

提升效能 : 資料對齊

介紹提升效能的重要概念 : 資料對齊(data lignment) Continue reading

Posted in 中文文章, 分享 | Tagged | Comments Off on 提升效能 : 資料對齊