2015-05-28 26 views
0

我是說得很對,下面是錯誤的:在過程的建築工創建Queue.Queue對象

import Queue 
import multiprocessing 

class P(multiprocessing.Process): 
    def __init__(self, spy): 
     super(P, self).__init__() 
     self.queue = Queue.Queue() 

    def run(self): 
     self.queue.put(1) 

因爲我的主進程中的過程創建隊列,而不是鍵入P.如果我在一個進程中創建隊列並在另一個進程中使用它,那麼會出現什麼問題?正如我在上面所做的那樣?請注意,我不希望在進程之間使用self.queue,我只是在構造函數中創建它而犯的錯誤。

我的理解是,如果我希望在進程之間使用隊列,那麼應該使用multiprocessing.Queue來代替。

回答

1

只要你不嘗試從兩個進程中使用隊列,通常的隊列應該可以正常工作。在某些情況下,隊列可能會在每個進程中留下一個副本,但它們並不相同。

是的,你應該使用multiprocessing.Queue如果兩個線程都使用隊列。

python queue & multiprocessing queue: how they behave?