Re: [問題] os.popen有辦法將一個模組物件化 重複 …

看板Python作者 (嘉)時間16年前 (2009/04/09 15:44), 編輯推噓0(004)
留言4則, 3人參與, 最新討論串2/3 (看更多)
很謝謝你的回應! 不過可能我表達有些錯誤 我舉另外一個例子好了 result=os.popen("echo 'query_name' | ./phonebook").read() phonebook是用c寫的程式 每次執行他的時候 他都會開始載入背後的資料庫 如果我只是單次執行的話 像是query_name= "John" 他就會回傳該人名的電話號碼 只不過他每次執行都需要重新載入電話號碼的資料庫 如果要執行多次的時候 就變成每次花時間重新載入 我的想法是有什麼辦法把result變成物件 下次再執行的時候 就不用再重新載入資料庫了? 感謝感謝! ※ 引述《keitheis (無)》之銘言: : ※ 引述《richtrf (嘉)》之銘言: : : 我有一個程式有用到os.popen : : 主要是要去執行一個unix executable的程式 : : 舉例來說 : : c=os.popen("echo '1+1' | ./counter").read() : : 跑起來是沒問題 : : 可是問題在於counter每次執行的時候 : : 都需要先花時間讀入資料(只需執行一次) : : 所以想說不知道有什麼辦法解決這個困惱 : : 簡省每次counter重新執行的時間 : : 感謝大家! : 這個問題有點模糊 : 試著跑一次: : Python 2.5.4 (r254:67917, Dec 23 2008, 14:57:27) : In [1]: import os : In [2]: c=os.popen("echo '1+1' | ./counter").read() : In [3]: c : Out[3]: '3\n' : In [4]: type(c) : Out[4]: <type 'str'> : 不論 counter 幹了什麼,假設最後是輸出一個數 : 那麼讀入該輸出的 c 已經是一個 (string) 物件 : 如果程式的功能就是每次執行一次 counter : 且 counter 的功能就是每次讀入最新的資料 : 那問題大概就是怎麼把 counter 的程式最佳化了? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.114.123.129

04/09 19:41, , 1F
popen
04/09 19:41, 1F

04/09 21:52, , 2F
Subprocess
04/09 21:52, 2F

04/09 23:03, , 3F
把phonebook寫成server,然後開個port… (被拖走)
04/09 23:03, 3F

04/09 23:07, , 4F
os.popen()就是個物件了,可以用write()輸入,用read()讀出。
04/09 23:07, 4F
文章代碼(AID): #19tQTYG- (Python)
文章代碼(AID): #19tQTYG- (Python)