2011-12-14 100 views
1

我有一個基因表達樹程序來控制bot。我有一個GP.py和一個MyBot.py。我需要能夠有MyBot.py訪問中GP.py創建的對象如何在python實例之間傳遞對象

的GP.py通過使用os.system()命令

我有幾百棵樹開始MyBot.py GP.py文件和MyBot.py文件中的對象需要對它們進行評估。

我無法將兩者合併爲一個.py文件,因爲MyBot.py的新實例執行了數千次,但GP.py需要評估每個樹的MyBot.py的適合度。

我知道如何使用導入GP.py導入方法和類定義,但我需要Tree類對象的具體實例 任何想法如何將此樹從第一個實例發送到第二個?

+0

是否有明確的理由使用os.system()?我的第一選擇是在一個線程中運行MyBot。 – yilmazhuseyin 2011-12-14 07:05:09

回答

2

您可以序列與泡菜模塊的對象(或者JSON?)

如果你真的想堅持使用os.system,那麼你可以有MyBot.py寫的醃製對象到一個文件,該文件一旦MyBot.py返回,GP.py就可以讀取。

如果您改用subprocess模塊​​,那麼您可以讓MyBot.py將pickle對象寫入stdout,並且GP.py可以通過管道讀取它。

如果您使用多處理模塊,那麼您可以產生MyBot進程並通過隊列實例來回傳遞數據。

0

我們正在開發ORB交互框架Versile Python(AGPL),它可以用於這樣的進程間對象級通信。它正在開發中,但你可能想看看。這個recipe顯示瞭如何在GP.py和MyBot.py之間使用管道來訪問遠程對象。您可以使用native python對象的鏈接直接訪問python對象,或者編寫自定義external objects