You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
95 lines
2.3 KiB
Python
95 lines
2.3 KiB
Python
from PyQt5.QtCore import QThread, pyqtSignal, QMutex
|
|
|
|
from utils.core import MainWindowConfig
|
|
from xps.ExploreTable import que
|
|
|
|
qmut = QMutex()
|
|
|
|
|
|
class mythread(QThread):
|
|
sinOut = pyqtSignal(str)
|
|
|
|
def __init__(self):
|
|
super().__init__()
|
|
self.working = True
|
|
self.data = False
|
|
self.sinOut.connect(self.close_break)
|
|
|
|
def __del__(self):
|
|
self.working = False
|
|
self.wait()
|
|
|
|
def run(self) -> None:
|
|
qmut.lock()
|
|
while True:
|
|
if self.data:
|
|
self.exec_()
|
|
name = que.get()
|
|
MainWindowConfig.IOMapping.setcurrent(name)
|
|
qmut.unlock()
|
|
|
|
def close_break(self):
|
|
self.data = True
|
|
|
|
# from PyQt5.QtCore import QRunnable, QThreadPool, QThread, pyqtSignal
|
|
#
|
|
# from utils.core import MainWindowConfig
|
|
# # from xps.ExploreTable import stack
|
|
# from xps.ExploreTable import que
|
|
#
|
|
# StopEvent = object()
|
|
#
|
|
#
|
|
# class Thread(QRunnable):
|
|
#
|
|
# def __init(self):
|
|
# super(Thread, self).__init__()
|
|
#
|
|
# def run(self) -> None:
|
|
# name = que.get()
|
|
# # name = stack.pop()
|
|
# MainWindowConfig.IOMapping.setcurrent(name)
|
|
# # except Exception:
|
|
# # pass
|
|
#
|
|
#
|
|
# class ThreadPool(object):
|
|
#
|
|
# def __init__(self, thread_count, communicate):
|
|
# super(ThreadPool, self).__init__()
|
|
# self.thread_count = thread_count
|
|
# self.communicate = communicate
|
|
# self.state = False
|
|
#
|
|
# self.pool = QThreadPool() # 创建线程池
|
|
# self.pool.globalInstance()
|
|
#
|
|
# self.communicate.connect(self.thread_stop)
|
|
#
|
|
# def thread_stop(self):
|
|
# self.pool.clear()
|
|
# self.state = True
|
|
#
|
|
# def start(self):
|
|
# self.pool.setMaxThreadCount(self.thread_count)
|
|
# while True:
|
|
# if self.state:
|
|
# break
|
|
# thread_ins = Thread()
|
|
# thread_ins.setAutoDelete(True)
|
|
# self.pool.start(thread_ins)
|
|
# self.pool.waitForDone() # 等待线程结束
|
|
#
|
|
#
|
|
# class TasksThread(QThread):
|
|
# sinOut = pyqtSignal(str)
|
|
#
|
|
# def __init__(self, thread_count=20):
|
|
# super(TasksThread, self).__init__()
|
|
# self.thread_count = thread_count
|
|
#
|
|
# self.thread = ThreadPool(thread_count=self.thread_count, communicate=self.sinOut)
|
|
#
|
|
# def run(self) -> None:
|
|
# self.thread.start()
|