2012-06-19 43 views
3

我試圖調試一個簡單的python應用程序,但沒有運氣到目前爲止。Python多進程調試

import multiprocessing 

def worker(num): 
    for a in range(0, 10): 
     print a 

if __name__ == '__main__': 
    for i in range(5): 
     p = multiprocessing.Process(target=worker, args=(i,)) 
     p.start() 

我想設置for循環中的斷點跟蹤「一個」但是,我試圖能做到這一點的工具非的值。 到目前爲止,我試圖與調試運行:

  • PyCharm並收到以下錯誤:導入錯誤:沒有模塊名爲 pydevd - http://youtrack.jetbrains.com/issue/PY-6649看起來 他們仍然在修復工作了這一點,從我個人理解,不ETA這個
  • 我也試圖與Winpdb調試運行 - http://winpdb.org但它根本不會去我的「工人」法內,只打印的值「A」

我真的很感激任何幫助!

+1

說到多處理/多線程,沒有「簡單」之類的東西。在我看來,至少。 – JAB

+1

這是PyCharm調試器中特定於Windows的錯誤。如果您確實需要使用多處理模塊調試應用程序,那麼我可以推薦使用Unix虛擬機並從PyCharm中爲該VM安裝遠程解釋器。 –

回答

0

當嘗試調試Python代碼時,我很少需要使用傳統的調試器,寧願用trace語句自由地散佈我的代碼。我想你的代碼更改爲以下:

import multiprocessing 
import logging 

def worker(num): 
    for a in range(0, 10): 
     logging.debug("(%d, %d)" % (num, a)) 

if __name__ == '__main__': 
    logging.basicConfig(level=logging.DEBUG) 
    for i in range(5): 
     p = multiprocessing.Process(target=worker, args=(i,)) 
     logging.info("Starting process %d" % i) 
     p.start() 

在生產中,您禁用調試跟蹤語句通過設置跟蹤級別logging.WARNING所以你只記錄警告和錯誤。

在官方Python站點有一個很好的basicadvanced日誌教程。

+0

我真的很感謝你的快速反應,但不幸的是,這不是我正在尋找的。我應該在我的問題中提到的是,這只是我需要的功能的一個簡單示例,但實際上我正在處理複雜的對象,並且需要斷點才能在特定時間查看它們的內容。簡單的打印內容是不夠的。 – barmaley

+0

我不知道任何與Visual Studio調試器一樣強大的python調試器。也許你可以修改日誌記錄技術以僅在特定條件下記錄,有效地模擬一個條件斷點? – CadentOrange

+0

日誌很棒,但即使日誌級別設置在日誌語句級別以上,它也不是免費的,因爲函數調用在像Python這樣的動態語言中有很大的代價。知道一個調試器是很好的,而且pdb附帶了Python。那麼這只是一個正確設置多處理項目的問題。 – velotron

2

我在我的virtualenv中複製了/Applications/PyCharm\ 2.6\ EAP.app/helpers/pydev/*.pysite-packages中的所有內容,它對我的​​工作(我正在調試芹菜/ kombu,斷點工作如預期)。

0

如果普通的pdb/ipdb可以與多處理器一起工作,那將會很棒。如果我能擺脫它,我要辦理連續多處理呼叫,如果所配置的進程的數目爲1

if processes == 1: 
    for record in data: 
     worker_function(data) 
else: 
    pool.map(worker_function, data) 

然後調試時,應用程序配置爲只使用一個單一的過程。這並不包括所有情況,特別是在處理併發問題時,但可能有所幫助。

0

WingIDE Pro立即提供此功能。

不需要額外的代碼(例如使用traceback模塊)。你只需運行你的程序,Wing調試器不僅可以從子進程打印stdout,但它會打破子進程中的錯誤和即時創建和交互式shell,因此您可以調試有問題的線程。它沒有比這更容易,我知道沒有其他IDE以這種方式公開子進程。

是的,這是一個商業產品。但是我還沒有找到任何其他提供調試器的IDE來匹配。 PyCharm專業版,Visual Studio社區,科莫多IDE - 我已經嘗試過了。在我看來,WingIDE也在解析源文檔方面處於領先地位。眼睛綠色配色方案是我現在無法生存的東西。

(是的,我意識到這個問題已經有5年多了,我正在回答。)