1

Pythonの新機能で、マルチスレッドを使用してアップロードプログラムを作成しました。問題は、各スレッドの進行状況を表示する進行状況バーが1つしかないことです。pythonpyqt4QThreadを使用しています。各アップロードスレッドの進行状況を知る方法はありますか?ここにコードのいくつかの部分があります。

class Worker(QThread):

    def __init__(self,parent=None):
        QThread.__init__(self,parent)
        self.counter = 0
        self.received = 0
        self.size = 0
        self.f = None
        self.ftp = None
        self.filename = ""

    def __del__(self):    
        self.wait()

    def handleDownload(self, block):
        self.counter += 1
        self.received += len(block)

次に、handleDownload()はプログレスバーにシグナルを送信して、その値を更新します。

どうも

4

1 に答える 1

2

すべてのスレッド間で共有されるカウンター オブジェクトを作成する必要があります。スレッドがダウンロードを完了するたびに、QMutexでロックされ、カウントがインクリメントされてロックが解除されます。その後、シグナルを送信して進行状況バーを変更できます (ただし、更新頻度が高すぎないようにすることをお勧めします)。

于 2011-05-20T13:53:06.873 に答える