我正在编写一个解析多个日志的脚本。最初它没有使用多处理。在 a 函数中,我让它使用 stdout.write 以百分比显示当前进度。
当我切换到使用 multiprocessing.Pool.map 时,进度就在彼此之上。该脚本本身可以正常工作,它可以完成工作,我需要它正确显示到终端。
PROGRESS: 1 of 119 PERCENT: 1% FILE: file1.txt
所以有时它会显示 file1 有时是 file2 有时是 file3...等等。
我希望它显示
PROGRESS: 1 of 119 PERCENT: 1% FILE: file1
PROGRESS: 1 of 119 PERCENT: 1% FILE: file2
PROGRESS: 1 of 119 PERCENT: 1% FILE: file3
这是我的第一篇文章,所以请原谅我缺乏经验。下面是部分代码。
def parseFiles(x):
try:
for stuff in stuffs:
stuff += stuff
progress = "PROGRESS: %s of %s" %(csvlist[3], getMaxSends(x))
percent = "PERCENT: {0:.0f}%".format(float(csvlist[3])/float(getMaxSends(x)) * 100)
curFile = "FILE: %s" %x
sys.stdout.write(" %s %s %s\r" %(progress, percent, curFile))
sys.stdout.flush()
except:
pool.terminate()
try:
pool = multiprocessing.Pool(processes=4)
pool.map(parseFiles, sendfiles)
pool.terminate()
os.chdir(args.directory[0])
except:
pool.terminate()
os.chdir(args.directory[0])
subprocess.call("rm *_send *_recv", shell = True)
subprocess.call("rm *.csv", shell = True)
print "\n\nSTATUS: FAILED"
print "I TOLD YOU THIS WOULD ALL END IN TEARS\n"
希望有人可以提供帮助。谢谢