[問題] 多階段輸出

看板Fortran作者 (realism)時間12年前 (2012/06/29 09:51), 編輯推噓1(1031)
留言32則, 4人參與, 最新討論串1/1
各位高手們好, 因為先前筆電跑了一週之後熱當,除了買散熱墊以外,想請問怎麼處理多階段輸出? 假設目前跑10萬次,能否每1萬次輸出一個檔? stat_test1_2_10000.dat 從1到10000次 stat_test1_2_20000.dat 從10001到20000次 或是每1萬次輸出一個檔,但涵蓋先前的次數? stat_test1_2_10000.dat 從1到10000次 stat_test1_2_20000.dat 從1到20000次 不知道上述兩種哪一種比較容易?還是其實都差不多只是因為我不會所以覺得很卡。 萬一跑次數不夠可以讀檔接續,或沒跑完也可以先抓部分數據。就不用再手動處理。 目前只有純粹寫入一個檔,我有爬過下面幾篇教學討論文,但不是很理解。 標題 Re: [問題] 請問如何在輸出檔名中包含變數 標題 Re: [問題] 如何輸出連續的檔名? 現行檔open file如下,就是一直持續累計下去的。後面的主程式才有write。 不太確定如果要加,是應該加在前面這裡?還是後面主程式執行的地方? open( unit = 2 & ,file = 'stat_test1_2.dat' & ,status = 'unknown' & ,access = 'sequential' & ,form = 'formatted') close (unit=2, status='delete') open( unit = 2 & ,file = 'stat_test1_2.dat' & ,status = 'new' & ,access = 'sequential' & ,form = 'formatted') 先謝謝願意幫忙的高手!已經找了兩天還是沒有頭緒,所以才貿然上來發問。 不好意思,我是新手,如果問題很low,還請見諒! -- 「機會是無法貯存的!你只能選擇努力,或是放棄。」 《筆談公關小姐》 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.161.125.217

06/29 11:40, , 1F
為啥你的程式要先開檔案再刪掉?為了覆蓋掉舊的檔案嗎?
06/29 11:40, 1F

06/29 13:20, , 2F
對 因為是覆蓋舊的檔案:)
06/29 13:20, 2F
※ 編輯: FainaTseng 來自: 140.119.66.154 (06/29 13:21)

06/29 13:45, , 3F
你的資料是每計算一次就輸出到.DAT 還是先存在
06/29 13:45, 3F

06/29 13:45, , 4F
在程式中 最後再一次寫入?
06/29 13:45, 4F

06/29 15:50, , 5F
哦~不過其實status='unknown'寫入時就會覆蓋舊的了
06/29 15:50, 5F

06/29 16:17, , 6F
會每一次都寫入.dat檔。想要拆成不同檔是因為當機時
06/29 16:17, 6F

06/29 16:17, , 7F
抓資料出來的時候因為沒跑完會無法切齊 得手動排版
06/29 16:17, 7F

06/29 16:18, , 8F
所以想請問大家有沒有方式就是每跑幾次輸出一個檔
06/29 16:18, 8F

06/29 16:19, , 9F
這樣就算程式跑到一半中斷還是有完全的輸出 只是沒跑完
06/29 16:19, 9F

06/29 16:20, , 10F
另外一個原因是現在跑10萬次發現不夠 就可以接續跑
06/29 16:20, 10F

06/29 16:20, , 11F
不用從頭開始(因為上次跑了一週多才跑到10萬次)
06/29 16:20, 11F

06/29 16:22, , 12F
手動切齊現在可行是因為跑的job還算少 但之後會上百筆
06/29 16:22, 12F

06/29 16:23, , 13F
所以似乎得有個更聰明一點的方法?
06/29 16:23, 13F

06/29 16:31, , 14F
可是你現在已經是每次運算都寫入了,這樣對於隨時要中
06/29 16:31, 14F

06/29 16:32, , 15F
斷來說是最好,反正何時停他輸出就停在哪,所以我看不
06/29 16:32, 15F

06/29 16:33, , 16F
大懂你希望"每跑幾次輸出一個檔",如果是格式會跑掉造
06/29 16:33, 16F

06/29 16:33, , 17F
成無法切齊(?)這就跟你write的部份有關,而接續計算
06/29 16:33, 17F

06/29 16:34, , 18F
也要看你程式是怎麼寫的(運算時需要什麼資料)
06/29 16:34, 18F

06/29 16:37, , 19F
我猜他是當機時會輸出資料不完整 造成後續不好讀入
06/29 16:37, 19F

06/29 16:38, , 20F
要重跑要手動調整一下資料
06/29 16:38, 20F

06/29 16:38, , 21F
希望是 -.-|||
06/29 16:38, 21F

06/29 17:48, , 22F
就是樓上說的意思:)
06/29 17:48, 22F

06/29 18:02, , 23F
是輸出資料不完整所以得手動 格式都是正確的
06/29 18:02, 23F

06/29 22:20, , 24F
你使用的是windows的系統嗎?? 還是linux的
06/29 22:20, 24F

06/29 22:20, , 25F
我不知道會不會是這個樣子造成的原因
06/29 22:20, 25F

06/30 10:59, , 26F
那台是windows系統:)
06/30 10:59, 26F

06/30 18:26, , 27F
我想你可以再給一個變數 給他做+1的運算
06/30 18:26, 27F

06/30 18:29, , 28F
之後再用判斷輸出然後再用變數的連續檔案輸出
06/30 18:29, 28F

06/30 18:29, , 29F
另外 在視窗上輸出的內容建議不要太多 這樣會消耗
06/30 18:29, 29F

06/30 18:29, , 30F
大量資源在顯示上面,我想這也有可能是當機的原因吧?
06/30 18:29, 30F

06/30 21:13, , 31F
那這樣的話看你資料怎樣才算是"完整",弄一個判斷式讓
06/30 21:13, 31F

06/30 21:14, , 32F
你的資料算到"完整"之後再輸出就好
06/30 21:14, 32F
文章代碼(AID): #1FxGeqd8 (Fortran)
文章代碼(AID): #1FxGeqd8 (Fortran)