1

以前の質問で説明したように、独立した非常に高価な操作の長いリストに対してを実装pool.mapました。multiprocessing

複数のコアを使用しても、作業には数時間かかる場合があります。操作の進行状況を簡単に視覚的に示したいと思います。実験として、マップされた関数内からリスト内の各項目の ID 番号を出力してみましたが、1) IDE では、すべての操作が完全に完了するまで表示されず (問題が少ない)、2) 操作が完了していません。順番に(より問題があります)。

これについて最善の方法は何ですか?

4

1 に答える 1

0
from threading import *
from time import sleep

class worker(Thread):
    def __init__(self, params = None):
        Thread.__init__(self)

        self.params = params
        self.status = 0.0
        self.start()

    def run(self):
        while self.status < 1.0:
                    # <--- This would be where you execute
                    #      your demanding/costly operations
                    # Also, update your status (progress)
            self.status += 0.1
            sleep(0.1)

x = worker()
y = worker()

while x.status < 1.0 and y.status < 1.0:
    print 'X status:', x.status
    print 'Y status:', x.status

注: 1.0 カウンターの制限は、デモを提供するためのものです。実際の操作では、スレッドを無限ループで永遠に存続させるか、run() 関数で計算を実行してから、同様に保存できる目的の値を取得した後に終了します。self.status変数への方法。

于 2013-02-06T18:36:03.580 に答える