看板 Python 關於我們 聯絡資訊
想請問一下 在用 ipython 的 notebook 時,cell 的執行順序會影響到什麼嘛? 有時候寫到後面突然想改前面的東西(有時會影響後面、有時不會) 這時候大家改完後都會怎麼做呢? 1. 把後面的所有 cells 都再跑過一次 2. 直接到最後面繼續寫 其實有點搞不清楚 ipython notebook 的原理 對於他這樣跳著順序執行感覺起來怪怪的XD 他把執行順序記起來是為了可以「重現」整個執行過程嘛? 如果是的話 In [10] x = x + 1 這種有 side effect 的 cell 要怎麼重現呢? 因為如果我重跑一次這個 cell,那他的編號就會變成 In [11] 然後整個頁面上就沒有 In [10] 了 那這樣 ipy 跑的時候是不是 In [9] -> In [11] 這樣跑? 如果是的話不就少跑了 In [10] 了? 希望有熟 ipy notebook 的高手可以指點一下 也希望有前輩可以分享一下平常都怎麼用 ipy notebook 謝謝! PS 偷問一下,ipy notebook 可以跑一個耗時的運算,然後把 browser 關掉嘛? 也就是在把 browser 關掉後,他會繼續跑原本的運算嗎? 還是 browser 一定要一直開著? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.248.24 ※ 編輯: kusoayan 來自: 140.112.248.24 (03/08 18:58)
ccwang002:stdout 如果 browser 關了 ipython 是不會幫你抓的 03/09 01:07
ccwang002:所以有一個 cell magic 叫 %%capture 03/09 01:07
ccwang002:那數字只是記次你下過幾次 input,執行過後就變文字了 03/09 01:08
ccwang002:你下指令給 ipy 它就會執行,關掉 browser 也會 03/09 01:10
ccwang002:但執行完後如果 browser 關了,ipy nb 就記不到 stdout 03/09 01:10
ccwang002:所以就會有你說的跳號,但變數的值是都還存著的。 03/09 01:11
我實際試過了,跑一個耗時的運算的確會跑 但是他會持續顯示 In [*],這樣我完全無從得知他是不是跑完了 請問有什麼解決方法嘛(我確實知道他已經跑完了,但他卻一直顯示 In [*]) ※ 編輯: kusoayan 來自: 140.112.248.24 (03/09 11:48)
ccwang002:恩…你想要什麼解決方法 @@ 跑完的話 CPU 使用率會掉 03/09 12:31
ccwang002:ipy nb 可以接受新的 input,右上不會有 kernel busy 03/09 12:31
ccwang002:想要主動通知的話,不如寫個 function 寄 email 給自己 03/09 12:32
ccwang002:例:mosky 寫的 https://github.com/moskytw/postbox 03/09 12:34
kusoayan:原來可以從右上角的 kernal busy 來看,那這樣我就ok了 03/09 12:57
kusoayan:,其實我只是想要找個方法知道他有沒有跑完而已 03/09 12:57
ccwang002:Kernel busy 跟你的 in * 會有一樣的問題喔,連線斷了 03/09 13:45
ccwang002:狀態就不會更新了 03/09 13:49
kusoayan:所以還是只能從 CPU usage 來判斷嗎? 03/09 14:35
kusoayan:或是用 email 03/09 14:35
ccwang002:因為我不確定你的 job 是跑好幾天還是幾分鐘的… 03/09 15:17
ccwang002:其實隨便下個 1+1 如果 hang 住就表示前面沒執行完 03/09 15:18
kusoayan:我的 job 大概都要跑好幾個小時,而且我的 ipy nb 是放 03/09 15:29
kusoayan:在 remote server 03/09 15:29
kusoayan:我也有想過用 1+1 來判斷XD 如果沒有更好的解法就只能這 03/09 15:30
kusoayan:樣了XD 謝謝你! 03/09 15:30