1

複数のログを解析するスクリプトを書いています。最初はマルチプロセッシングを使用しませんでした。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"

誰かが助けてくれることを願っています。ありがとう

4

0 に答える 0