【lab】常規操作/註意事項
阿新 • • 發佈:2019-03-15
print red 保存 命名 test 臨時 art pid 最有
定時開始
- bash
echo "python run.py" | at 4:00
atq # get job ids
at -d <job-id> # cancel job
數據信息(time stamp, entries, method, notes, etc)
任何分布式環境都適用的一個風格:每個文件保存自己的header,而不是用一個中央索引來整合和記錄。
因此最有效的整合零散實驗數據的方法,是在每一個的首行記錄詳細信息,並且標註好各個數據項。
測試
命名一律:test_
方便git提交的時候寫入.gitignore
多進程/線程長時間運行
將需要運行的參數保存在一個外部文件,而不是臨時寫在代碼裏。(待實踐)
將參數亂序後分配給不同的進程/線程而不是順序分配,這樣任何時刻得到的數據都有一定代表性
如果是多進程運行,註意將stderr和stdout重定向到輸出文件。因為程序運行之後各自在自己的進程中輸出,不會打印到當前的shell中。方法如下 https://stackoverflow.com/questions/1501651/log-output-of-multiprocessing-process:
from multiprocessing import Process import os import sys def info(title): print title print 'module name:', __name__ print 'parent process:', os.getppid() print 'process id:', os.getpid() def f(name): sys.stdout = open(str(os.getpid()) + ".out", "w") info('function f') print 'hello', name if __name__ == '__main__': p = Process(target=f, args=('bob',)) p.start() q = Process(target=f, args=('fred',)) q.start() p.join() q.join() # output ''' $ ls m.py $ python m.py $ ls 27493.out 27494.out m.py $ cat 27493.out function f module name: __main__ parent process: 27492 process id: 27493 hello bob $ cat 27494.out function f module name: __main__ parent process: 27492 process id: 27494 hello fred '''
【lab】常規操作/註意事項