command_1 から command_3 までのファイルのチャンクを処理するように定義された 3 つの関数 (2 つのループ) があり、終了したら、同じワークフローを使用して別のチャンクを処理します。
ここに示す擬似コード
実際のコードはより長く、機能しています:
def run(cmd):
try:
subprocess.Popen(command,shell='True')
except:
exit()
def run_chunk(chunk,command,flag=False)
for file in chunk
cmd = eval(command+'("' + bam + ')"')
run(cmd)
def main():
chunks = [[chunk1],[chunk2]...]
for chunk in chunks:
run_chunk(chunk, command_1, True)
os.waitpid(-1,0)
run_chunk(chunk, command_2, True)
os.waitpid(-1,0)
run_chunk(chunk, command_3, True)
os.waitpid(-1,0)
注: eval は文字列を返します。これは、「実行」機能のコマンドです。
私の問題は、command_1 を実行すると、os.waitpid() が機能しているように見えることです。command_1 が終了すると、プログラムは command_2 に移動します。command_2 は command_3 に移動する前に待機しているように見えますが、メイン関数の外側のループは command_1 をすぐに実行します (これは望ましくありません)。
コードのバグを見つけられる人はいますか? どうもありがとう!