2016-01-18 19 views
1

我有兩個共享一個基類的python類,讓我們說定義一個multiprocessing.Queue。隊列對象只能通過繼承在進程之間共享

這些類中的每一個都將在單獨的子進程上啓動,並需要通過隊列共享信息。

現在,如果基類定義了一個Queue,那麼每個子類對象都會實例化它自己的隊列,這使得不可能共享隊列元素。但是,有一次我發現這個文件

Queue objects should only be shared between processes through inheritance. 

那麼什麼是的子流程和如何上面的句子甚至意義之間共享隊列的正確方法?

注意,我能明顯的子進程的初始化傳遞到隊列的引用,但我想使用繼承TAKLE這個問題

+1

你能給出一個展示問題的代碼示例嗎?我很快就讀到了一些關於這方面的內容,我認爲通過繼承它們意味着從父進程繼承(如果是這樣,它肯定會令人困惑)。我發現了一些使用'multiprocessing.Manager'來避免錯誤的例子。 –

+1

請參閱[這裏](https://docs.python.org/3.5/library/multiprocessing.html#shared-ctypes-objects)。引用:*可以使用共享內存創建共享對象,這可以由子進程繼承*。 –

+0

我認爲混淆是「繼承」這個詞。它們意味着進程之間的繼承,而不是類。 – Mahdi

回答

0

那麼什麼是的子流程和 之間共享隊列的正確方法上面的句子甚至是有意義的?

當您談論進程之間的繼承(如子進程和父進程)時,該句有意義。它不是關於面向對象編程中的類和繼承。


對於使用隊列的正確方法是,看thisthis例如。