2011-08-09 198 views
0

Windows 7 x86上的Python 3.2.1中的多處理模塊似乎在擊敗我。多處理不會產生新進程

我有兩個模塊:servmain.py和sslserver.py。這個想法是(最終)編寫一個應用程序,它將使用SSL與客戶端進行通信。這是我已經失敗的部分。但是,我需要將服務器監聽器分解成獨立的進程,以便主進程可以完成其他一些任務。作爲一個虛擬測試,我告訴子進程打印「Hello World」來標準輸出並將文本寫入不存在的文本文件。

這裏是我的父進程(servmain.py)代碼:

from multiprocessing import Process 
import logging 

if __name__ == "__main__": 
    logger = multiprocessing.log_to_stderr() 
    logger.setLevel(logging.DEBUG) 

    #Fire up the server 


    listenerProcess = Process(target = sslserver.startServer) 
    listenerProcess.start() 
    logger.debug("Starting listener.") 
    listenerProcess.join() 
    logger.debug("Done.") 

這裏是sslserver.py代碼:

def startServer(): 
    print("Hello World") 
    f= open("testfile.txt", "w") 
    f.write("Hello world\n") 
    f.close() 

當我運行servmain.py,我得到以下輸出:

[DEBUG/MainProcess]啓動監聽器。 [DEBUG/MainProcess]完成。

這是我所期望的。但是,testfile.txt尚未創建,並且沒有輸出到stdout。有沒有人知道爲什麼會發生這種情況?

+0

只是爲了確保,你究竟做了'進口multiprocessing'和'進口sslserver' ,所以你的代碼實際上會按照你的說法運行? ('logger = multiprocessing.log_to_stderr()'和'listenerProcess = Process(target = sslserver.startServer)' ) – agf

+0

是的,進口已經到位;代碼運行時沒有導入錯誤。 – wibarr

+0

您確定要寫入您有權寫入的目錄嗎?你能否嘗試明確地將'testfile.txt'的路徑設置爲100%確定可寫的目錄? –

回答

1

我想我錯過了一些圖書館,所以我不得不刪除你的記錄器代碼,因爲這對我來說是個問題。對我來說,你似乎有一個命名/路徑衝突。請確保名稱'sslserver'不與python路徑中的任何模塊衝突。

另外,設置python路徑!在我的例子中,這兩個文件都在同一個目錄中。

pytest.py

#!/usr/bin/env python 
from multiprocessing import Process 
import sslserver 
import logging 
if __name__ == "__main__": 
    #logger = multiprocessing.log_to_stderr() 
    #logger.setLevel(logging.DEBUG) 

    #Fire up the server 


    listenerProcess = Process(target = sslserver.startServer) 
    listenerProcess.start() 
    #logger.debug("Starting listener.") 
    print "Starting Listener\n" 
    listenerProcess.join() 
    #logger.debug("Done.") 
    print "Done\n"; 

sslserver.py

#!/usr/bin/env python 

def startServer(): 
    print("Hello World") 
    f= open("testfile.txt", "w") 
    f.write("Hello world\n") 
    f.close() 

輸出

[email protected]:~/temp$ ./pytest.py 
Starting Listener 

Hello World 
Done 

[email protected]:~/temp$ cat testfile.txt 
Hello world