2011-04-19 65 views
4

我想在兩個工作在相同(和不同)機器上的兩個python解釋器之間交換對象。在解釋器之間傳遞python對象

有沒有一種機制可以實現?

〜維傑

更具體: 我有一樣的(和不同的)機(一個或多個)上運行的幾道工序。這些過程中幾乎沒有產生被其他過程消耗的對象。我正試圖解決這些流程中的生產者/消費者問題。

我以前在與線程相同的python解釋器上運行這些進程,並且能夠使用隊列來解決生產者 - 消費者問題。但是由於負載的增加,我決定將一些進程轉移到其他機器上。現在駐留在不同機器(和解釋器)上的這些進程需要共享對隊列的訪問。我想知道是否有一種機制可以幫助我有效地做到這一點。

我可以編寫一個類來管理隊列,並使用套接字處理其他進程的對象。

我認爲這是一個普遍的問題,如果你想使用python來處理大量的數據。 因此,我很想知道是否有其他更優雅的解決方案。

〜維傑

+0

你應該做的第一件事就是搜索序列化Python對象的方法。你應該做的第二件事實際上是閱讀你找到的Google結果。閱讀完這些結果後,請**更新**您的問題以獲得更具體的結果。 – 2011-04-19 09:45:35

回答

5

一般情況下,你需要序列化對象。在Python中,這意味着pickle和unpickle。你可以在一邊醃製一個物體,以某種方式轉移它(套接字等),然後取消它。爲此,請使用picklecPickle模塊。

Pyro包是一個完整的包,以透明的方式做到這一點。