我怎么知道哪个线程发出了“finished”的信号?

2024-04-26 04:51:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我开始一些线程,想知道哪个线程完成了:

...
...
def start_ten_threads(self):
    self.workers = []

    for i in range(0, 10):
        self.workers.append(thread_worker(i, self))

        ...    
        ...

    for k in range(0, 10):
        self.workers[k].finished.connect(lambda: self.print_finished("WorkerThread %d finished" % k))
        self.workers[k].start()

@Slot(str)
def print_finished(self, str):
    print(str)

我得到每个线程相同的数字9(k的最后一个值)。为什么?我可以用信号“finished”这样的参数吗?我已经读过一些关于QSignalMapper的东西了。还有别的路吗?你知道吗

如果我使用自动发送器()我得到了线程的点,但我不知道它是哪个线程号。你知道吗


Tags: inselffordefrange线程threadstart
1条回答
网友
1楼 · 发布于 2024-04-26 04:51:34

对于lambda,请尝试:

lambda k=k: self.print_finished("WorkerThread %d finished" % k)
       ^^^

使用这种语法,创建lambda时k的值将被lambda捕获并使用。你知道吗

相关问题 更多 >