2013-11-21 21 views
1

我不知道我是否表達自己的意圖明確標題。歡迎您加以改進。
讓我們來看一個例子:
我想讓我的網站的用戶A可以做一些動作來改變站點B的一些數據。
所以我模擬登錄和B站點的兩個動作。
這意味着當用戶通過網站A帳戶登錄我的網站時,我應該發3帖子。
我有三個功能:我應該在啓動函數的所有函數調用中使用多處理嗎?

def login(name,pwd): 
    .... 
    token = get_token(name,pwd) 
    set_config(token) 
    open_something(token) 
    .... 

def set_config(toekn): 
    .... 

def open_something(toekn): 
    .... 

我知道線程moudle,但我必須建立一個類來使用它,這似乎有點不方便和粗俗。 而且我知道互斥體,就像下面一樣,但它似乎一次只運行一個線程。

def login(name,pwd): 
    mutex.acquire() 
    try: 
     print('Do some stuff') 
    finally: 
     mutex.release() 

所以我想我必須使用多處理。
我想知道它是否會工作,如果我只是使用下面的code.Or我應該如何寫代碼?

def login(name,pwd): 
    .... 

if __name__ == '__main__': 
    p = Process(target=login, args=(name,pwd)) 
    p.start() 
    p.join() 
+0

我不明白,不如好,爲什麼你認爲你需要做的登錄界面,在一個單獨的進程?至於你正在考慮的,我認爲它應該工作。你試過了嗎? – Blckknght

+0

@Blckknght是的,但結果並不如我的預期。 – Mithril

+0

你需要告訴我們你的期望和發生的事情。我們不會讀懂你的想法,並猜測發生了什麼。 – Blckknght

回答

1
if __name__ == '__main__': 
    p = Process(target=login, args=(name,pwd)) 
    p.start() 
    p.join() 

應該工作。但它是作爲

if __name__ == '__main__': 
    p = Thread(target=login, args=(name,pwd)) 
    p.start() 
    p.join() 

這是

if __name__ == '__main__': 
    login(name, pwd) 
+1

是的,你是對的。再次檢查我的代碼後,我發現問題 - 我的代理服務只運行一個帶有資源鎖的線程。 – Mithril

相關問題