0

私は、自分が書いたコードを並列プロセスに変換して、出身大学のコンピューター クラスターに配布する作業を行っています。クラスター用のスクリプトを作成する準備をするために、クラスターによって提供される Python コードのサンプル スニペットの 1 つを読むことから始めました。

#! /usr/bin/python

# This script replicates a given test with varied parameters
# creating unique submit scripts and executing the submission to the CRC SGE queue

# Imports
import os
import shutil
import string

basedir=os.getcwd()
origTestFol='wwd'
templFol='template'
origTestDir= basedir + '/' + origTestFol
templFolDir= basedir + '/' + templFol

steps=[0,1,2,3,4,5,6,7,8,9]
primes=[2,3,5,7,11,13,17,19,23,29,31]
trials=[6,7,8,9,10]

for step in steps:
    newTestDir= origTestDir + '_nm_' + str(step)
    if not os.path.exists(newTestDir):
        os.mkdir(newTestDir)
    os.chdir(newTestDir)
    for trial in trials:
       newTestSubDir= newTestDir + '/' + str(trial)
       if not os.path.exists(newTestSubDir):
            shutil.copytree(templFolDir,newTestSubDir)
            os.chdir(newTestSubDir)   
            os.system('sed -i \'s/seedvalue/' + str(primes[trial]) + '/g\' wwd.nm.conf')
            os.system('sed -i \'s/stepval/' + str(step) + '/g\' qsubScript.sh')
            os.system('qsub qsubScript.sh')
            os.chdir(basedir)

最後の 4 行までは [たとえば、"os.system('sed -i ...)" まで] コードをたどることはできますが、それ以降はコードをたどるのに苦労します。これらの最後の 4 行が何をしているのかを他の人が理解するのを手伝ってくれる可能性はありますか? 擬似コードで嘘を説明する方法はありますか? 私が知る限り、最初の sed 行は「seedvalue」を素数 [trial] の値に置き換えようとしていますが、seedvalue が何であるかはわかりません。また、次の行の「stepval」を理解する方法もわかりません。他の人がこれらの質問に当てることができる光は、最も高く評価されます.

4

2 に答える 2

1

sed で少し検索できます: http://en.wikipedia.org/wiki/Sed#In-place_editing

要するに:sed -i 's/old/new/g' fileのすべての出現箇所oldnewin に置き換えますfile。フラグは-i、ファイル自体を変更して、インラインで実行することを指示します。

コード内のseedvaluestepvalは、テキスト ファイル内の 2 つの単語にすぎませんwwd.nm.confqsubScript.sh. これらのコマンドは、テキスト エディターやワープロで行うのと同じように、これらの単語を置き換えます。

于 2013-09-01T03:55:55.240 に答える
1

seedvalueは文字列なので、その値は と同じstepvalです。

最初の行は、 (すべての行で、「global」の略です)のすべての文字列をvaluesedに置き換えます。次のように考えてください。seedvaluewwd.nm.conf/gstr(primes[trial])

file 内でテキストstepvalueが見つかった場合は常にwwd.nm.conf、値を入力しますstr(primes[trial])(Python で評価されるものは何でも)。

2 番目のsed呼び出しは同様stepvalのことをstep行いますが、ファイル内のテキストを置き換えますqsubScript.sh

于 2013-09-01T03:56:02.593 に答える