RT,查了Qt關于Pyside2的相關資料,對QThread的介紹使用還是override了run方法,并沒有Qt目前主推的moveToThread方法,我按照自己的理解使用Python寫了多執行緒。但是列印結果不正確,有誰能給找下問題,介紹下么?
MultiThreadTest:創建執行緒,信號槽觸發。
Worker:被移入新執行緒的類
具體代碼如下
Worker:
#!/usr/bin/env python
# encoding: utf-8
# @author: qiaowei
# @license: (C) Copyright 2013-2019
# @contact: [email protected]
# @file: worker.py
# @time: 2020/7/28 0028
# @desc:
import threading
from PySide2.QtCore import QThread
from PySide2.QtCore import Slot
from PySide2.QtCore import QObject
class Worker(QObject):
def __init__(self):
super().__init__()
# print('Worker.__init__ = ' + str(id(QThread.currentThread())))
@Slot()
def do_something(self):
# print('Worker.do_something = ' + str(threading.currentThread()))
print('Worker.do_something = ' + str(QThread.currentThread()))
MultiThreadTest:
#!/usr/bin/env python
# encoding: utf-8
# @author: qiaowei
# @license: (C) Copyright 2013-2019
# @contact: [email protected]
# @file: multithread_test.py
# @time: 2020/7/28 0028
# @desc:
import threading
from PySide2.QtCore import QThread
from PySide2.QtCore import QObject
from PySide2.QtCore import Signal
from multithread.worker import Worker
class MultiThreadTest(QObject):
def __init__(self):
super().__init__()
self.__thread_a = QThread()
self.__worker = Worker()
self.send_msg.connect(self.__worker.do_something)
# pass
def start_multithread(self):
# print('MultithreadTest.start_multithread = ' + str(threading.currentThread()))
print('MultithreadTest.start_multithread = ' + str(QThread.currentThread()))
multi_thread = MultiThreadTest()
self.__worker.moveToThread(self.__thread_a.thread())
self.__thread_a.start()
# self.__thread_a.sleep(3)
# print('MultithreadTest.start_multithread = ' + str(threading.currentThread()))
print('MultithreadTest.start_multithread = ' + str(QThread.currentThread()))
# multi_thread.send_msg.emit()
self.send_msg.emit()
# print('MultithreadTest.start_multithread = ' + str(threading.currentThread()))
print('MultithreadTest.start_multithread = ' + str(QThread.currentThread()))
# 定義無引數信號槽
send_msg = Signal()
運行代碼:
#!/usr/bin/env python
# encoding: utf-8
# @author: qiaowei
# @license: (C) Copyright 2013-2019
# @contact: [email protected]
# @file: start_test.py
# @time: 2020/7/28 0028
# @desc:
from multithread.multithread_test import MultiThreadTest
start_01 = MultiThreadTest()
start_01.start_multithread()
運行結果:
MultithreadTest.start_multithread = <PySide2.QtCore.QThread object at 0x0000000002FE6408>
MultithreadTest.start_multithread = <PySide2.QtCore.QThread object at 0x0000000002FE62C8>
Worker.do_something = <PySide2.QtCore.QThread object at 0x0000000002FE62C8>
MultithreadTest.start_multithread = <PySide2.QtCore.QThread object at 0x0000000002FE62C8>
uj5u.com熱心網友回復:
dddddduj5u.com熱心網友回復:
DDDDDDDDDD轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/17201.html
標籤:Qt
