[英]Python multiprocessing: RuntimeError: “Queue objects should only be shared between processes through inheritance”
python中的Queue
實現依賴於系統pipe
將數據從一個進程傳輸到另一個進程以及一些semaphores
來保護此pipe
上的讀寫。
pipe
在進程中作為打開文件處理,並且由於操作系統限制,只能在生成時與子進程共享。
對於早期版本的python, semaphores
也被視為只應在產卵時共享的文件,至少在基於UNIX的系統中。
由於這兩個子對象通常不能共享,因此一旦啟動,就無法對Queue
進行pickle並將其發送到子進程。
但是,對於某些操作系統和最新版本的python,可以共享Connection
並創建可共享的Semaphore
。 因此,您可以在理論上創建可以在進程之間共享的自己的Queue
。 但它涉及很多黑客,可能不是很安全。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.