2012-02-04 66 views
1

如果我有:是否有可能處理的代碼段,而不是同時的順序

def EventCheck(): 

    if cond_1 == True: 
     do small action 

    if cond_2 == True: 
     do small action 

    if cond_3 == True: 
     for i in range(20): 
      do longer action multiple times 

    if cond_4 == True: 
     do small action 

    if cond_5 == True: 
     do small action 


while true: 
    eventCheck() 

以我的理論程序正常流量控制將是沿圖的線條。在圖片

一個是否有可能用叉子叉程序的實際控制,所以如果一個特定的事件評估爲真就那麼的分支機構和運行其功能其餘程序繼續正常嗎?如上圖b所示。

在我的主'事件'循環中,我有一個很少有的真實條件,但是當它出現時,我需要它去執行一個半長的任務。現在,它當然需要控制程序,所以當條件A運行時它是代碼,沒有其他主要的常用事件可以被檢查。

這可能嗎?

回答

5

結賬multiprocessing

如果較長的任務是I/O綁定(而不是CPU),還有一些其他解決方案,如事件驅動/異步庫和threading。這些不提供實際的順序代碼執行,而是在I/O完成時執行其他代碼。爲了更好地理解選擇多處理與共享內存模型(比如線程),請閱讀Python的GIL

+0

多處理似乎正在做我所需要的。謝謝! – Zack 2012-02-04 17:49:08

+0

請注意,在代碼中引入多個執行線程會帶來很多新問題(這很有禮貌)。線程包和多處理具有相同的API,但是做了完全不同的事情......請注意,它們帶來不同的好處和不同的頭痛,並且任何一個都適合您所描述的問題。 – 2012-02-05 14:02:51

相關問題