2011-08-01 63 views
8

我有一個比較簡單的(無類)python 2.7程序。程序所做的第一件事是將sqlite dbase讀入字典。數據庫很大,但不是很大,大約90Meg在磁盤上。讀入大約需要20秒。讀入數據庫後,我初始化一些變量,例如爲什麼eclipse/pydev中的調試對我的python程序太慢了?

localMax = 0 
localMin = 0 
firstTime = True 

當我在Eclipse-3.7.0/PyDev的調試這個程序 - 即使這些簡單的線條 - 每個單步在調試器吃掉的芯的100%,並且在5和10秒之間發生。我可以看到python進程達到100%cpu 10秒。單步...等待10秒...單步...等待10秒...如果我在命令行使用pdb進行調試,沒有問題。如果我根本沒有進行調試,程序運行速度「正常」,沒有什麼奇怪的,比如在Eclipse中。

我已經轉載了一個雙核心的Win7 PC瓦特/ 4G內存,我的8核心Ubuntu盒瓦特/ 8G內存,甚至我的Mac Air。這對於多平臺開發來說如何!我一直在想它會在的某處。我從來沒有想過在任何時候內存不足。

在每個Eclipse單步驟中,爲什麼python進程跳轉到100%的CPU,並需要10秒?

+3

不知道,但我有一個預感,它可能與Eclipse調試器視圖有關,它試圖在看門狗窗口中輸出局部變量,並且某種程度上這個過程失敗了(例如,它試圖將SQlite數據庫的轉儲打印爲字符串)。唯一的辦法是推出一個完整的程序源代碼,以可重複的方式表達問題。 –

+0

[http://www.jetbrains.com/pycharm/ –

+1

]根據我的經驗,我只是吃了太多的日食,吃了太多的記憶,而且在一些地方慢,我決定學習PDB。它的老方法,但它的速度很快,它永遠不會讓你失望。我使用名爲ipdb btw的增強版本。 – Hassek

回答

7

這是一個很好的解決方法,基於Mikko Ohtamaa的提示。我剛剛在我的Mac Air上驗證了以下內容:

  • 如果我只是在Eclipse GUI中關閉「變量」窗口,則可以以正常速度單步執行代碼。這很好,但是,呃,我沒有變量窗口。
  • 對於我想查看的任何變量,我可以將光標懸停在變量上並查看值。我沒有試圖將這個罪魁禍首放在我的大字典上。
  • 我也可以在任何變量上單擊鼠標右鍵,然後添加一個'Watch',它會顯示'Expressions'窗口。在這種情況下,變量只是一個'表達式的退化情況(非常簡單的情況)。

因此,我的解決方法是關閉Eclipse變量窗口,並使用表達式窗口選擇性地查看變量。一個痛苦,但對於我所做的調試比pdb更好。

1

我只是註釋掉該行指出:

np.set_printoptions(threshold = 'nan') 

看來日食試圖跟上太多的信息。

+2

這條線在哪裏? – Paolo

相關問題