繁体   English   中英

Pyside:我怎么知道哪个线程发出了“完成”信号?

[英]Pyside: How can i know which thread emitted the signal “finished”?

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

...
...
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的最后一个值)。 为什么? 我可以通过信号“完成”以这种方式使用参数吗? 我已经阅读了一些有关QSignalMapper的内容。 这里还有别的办法吗?

如果我使用self.sender(),我会指向该线程,但是我不知道它是哪个线程号。

对于lambda,请尝试:

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

使用这种语法,lambda将捕获并使用创建lambda时的k值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM