0
pythonスクリプトで複数のC++プログラムを実行する際に問題があります。 すべてのプロセスは細かく実行されており、すべてのプロセスは0エラーなどで終了しますが、プロセスはCPU上で100%実行されていません。私は同時に64個のプロセスを実行することができますcppプログラムがサーバで遅く実行する
#!/usr/bin/python
import os, shutil, time, math
from sys import *
CPUs=64
shs={}
for i in range(CPUs):
fname="run"+repr(i)+".sh"
shs[i]=file(fname,"w")
#print "nohup bash "+fname+" &"
time.sleep(0.01)
fin = file("adatokOriginal.txt")
lines = fin.readlines()
fin.close()
# kezdpath = "./szimulaciok_n5_5240_"+str(n)+"/szimul_"+str(m)+"/instanc_"+str(l)
# if(os.path.isdir(kezdpath)):
# shutil.rmtree(kezdpath)
# os.mkdir(kezdpath,0777)
for m in range (5):
k=0
for j in range(33):
print(m,j)
mu=10**(-6) * j**(math.log(10,2))
for i in range (1000):
fout = file("adatok.txt", "w+")
Pathpath = "./szimulaciok_n5_5240"+"_"+str(m)+"/szimul"+"_"+str(j)+"/instanc_"+str(i)
if (os.path.isdir(Pathpath)):
shutil.rmtree(Pathpath)
os.makedirs(Pathpath,0777)
for line in lines:
line=line.strip()
if line == "outputDir= default":
# fout.write("outputDir= "+str(path)+"/\n")
print("lel")
elif line == "mutrata= 1":
fout.write("mutrata= "+str(mu)+"\n")
elif line == "szintszam= 5":
n=5-m
fout.write("szintszam= "+str(n)+"\n")
#elif line == "mutrata= 0.1":
# fout.write("mutrata= "+str(1)+"\n")
else:
fout.write(line+"\n")
fout.close()
os.rename("./adatok.txt", Pathpath+"/adatok.txt")
shutil.copyfile("./gnuplotscriptOriginal.plt", Pathpath+"/gnuplotscriptOriginal.plt")
k=0
for c in range(5):
for b in range(33):
for a in range(1000):
path = "./szimulaciok_n5_5240"+"_"+str(c)+"/szimul"+"_"+str(b)+"/instanc_"+str(a)
shs[k%CPUs].write("cd "+path+"\n")
shs[k%CPUs].write("../../../szimu >/dev/null\n")
shs[k%CPUs].write("cd ../../..\n")
k = k+1
for i in range(CPUs):
shs[i].close()
for i in range(CPUs):
fname="run"+repr(i)+".sh"
os.chmod(fname,0777)
os.system("./"+fname+"&\n")
time.sleep(0.01)
print("ok")
、私は5回33回実行し、実行するために1000のプロセスを持っています。ここでは
はコードです。唯一の問題は、平均45%のCPU搾取があることです。助けてください!
ありがとうございました!
いいえ...私のコードを正しく説明していないのは間違いです。したがって、最初の3つのループ(m、j、i)では、出力データに必要なディレクトリを作成し、各フォルダcppプログラムの入力データである "adatok.txt"を書き直します( "szimu"として実行されます)。出力データ。そして、ちょうど私が適切な入力データを持つフォルダを生成した直後に、私はcppプログラムを実行した直後に、Cbaループで64個のsimultaniously ... –
もう一つの奇妙なことは、 PrintScreen:http://imgur.com/YezwLWY –