2014-10-17 54 views
3

用PyCharm調試Django。如何在Windows上使用Python + Django + PyCharm更快地進行調試?

當我在調試器中運行任何東西時,它運行緩慢。

Django啓動時間很長。

不要誤解我的意思 - 我喜歡PyCharm,因爲它擁有舒適的調試會話所需的所有花裏胡哨的功能......而且Python的調試方式比其他語言(如C )。但即使我調整了我的PostgreSQL數據庫以進行測試(Optimise PostgreSQL for fast testing),即使我有SSD驅動器和i7四核CPU,即使我特別告訴我的防病毒軟件不要觸摸C:\ Python27目錄中的任何內容以及我的項目目錄,它仍然很慢。

任何想法,我如何加快調試?

我很希望看到改進主要在流程啓動時間,因爲我最常使用的情況是當我調試單個單元測試時。

+0

在調試器下運行不幸的是Python是始終將是相當緩慢。使用4個內核對於單線程進程通常不起作用。 Python的速度並不爲人所知,當你在調試器下運行時,它使用sys.settrace,它爲每個執行的語句調用(Python,而不是C)跟蹤函數。 – 2014-10-17 13:31:28

+0

嗨普雷斯頓,謝謝你的評論。是的,我認爲有很多追蹤/數據收集正在進行,我不會忽視這個事實。這筆交易是我希望它變得更快。根據你的評論,你的建議是「儘可能快地獲得單核心」 - 我理解你是對的嗎? – dotz 2014-10-17 13:33:24

+0

是的,你理解正確。我不知道會有什麼影響。但是稍微快一點的CPU,比如3.4 Ghz而不是3.2,可能不會有明顯的差別。你說你正在調試一個單元測試,但是如果這個單元測試具有顯着的依賴關係,比如Django環境,那麼只需要運行一個測試就可以做很多工作。當您在一個會話中運行大量測試時,您會分攤啓動成本。 – 2014-10-17 13:36:50

回答

2

正常運行python,但在代碼上使用pdb。就像這樣:

... code before ... 
import pdb; pdb.set_trace() 
... code after ... 

它會停止在這一點上的代碼。您需要按c(繼續),q(退出)或n(下一個)才能繼續。你可以測試表達式並通過按l來檢查你在哪裏。

代碼可能會更快,但調試可能會更痛苦。

+0

小改進,但確實改善。謝謝! – dotz 2014-10-17 21:23:18

1

不久前我有同樣的問題,直到我找出來,Django和PyCharm允許您指定運行單個測試,而不是每次按下調試按鈕時都運行完整的測試套件。

爲了做到這一點,只需在PyCharm中編輯您的調試配置即可。將您的target更改爲指向模塊,類或甚至是測試文件內部某處的方法。

爲了做到這一點,請確保您的目錄是模塊(例如,其中有一個__init__.py文件的目錄)。您現在可以按以下格式指定特定目標:

django_app.tests_module.test_case.test_method 

很明顯,最終目標「路徑」取決於您項目的組織結構。

不要忘記改變目標回一旦你做是爲了推動你的代碼之前運行所有測試執行;)

+0

好吧,我記得在Emacs中編寫了一些Python幫助器應用程序和一些LISP程序,只是爲了實現我可以通過右鍵單擊(或Ctrl + F5,直到他們破壞它)來做同樣的事情。這是我非常喜歡PyCharm的原因之一。不幸的是,單個測試(運行Django,創建PgSQL數據庫)的啓動時間似乎幾乎不可接受,這就是我問這個問題的原因。所以,感謝您的評論,但我已經知道並使用這種方法。 – dotz 2015-03-07 13:15:57

相關問題