我有一個Python接口類到一個大的C++庫,它爲我做了一些工作(具有大量的數據)。我可以通過發送一個信號,即os.kill(pid,signal.SIGINT)
,優雅地阻止工作人員。 所以,我想我應該能夠運行在p = Process(target=worker.run())
工人 - 這工作 - 這工作在良好 - - 然後在任意時間通過發送一個信號中斷工作者,但:工人的python多處理狀態
我不能讓國家的工人回來!有幾個函數被導出,它應該給我關於工作人員正在做什麼的信息,但是(顯然在調用p.join()
後),所有這些函數都返回,就是初始值。爲什麼? (工人實際上做了他的工作,我可以在創建的輸出文件中看到這些信息,但我沒有在那裏獲得信息,在工作期間我想要...)
使用隊列或多處理器管理器似乎不是一種選擇,因爲對象並不是真正的「可選」,如果我只需要工作器中特定變量的狀態,我也不想複製所有內容。 (我不敢肯定我對這個可鄙概念有着堅定的把握......)
在此先感謝您的任何建議!
正如aix的答案所暗示的,這聽起來像是您將多處理與線程行爲混爲一談。子進程需要以某種方式將狀態傳回父進程。如果你想要傳遞回來的狀態是一個基本的數據類型,那麼只要pickleability變好就不用擔心(http://docs.python.org/library/pickle.html) –