gangdong
64 天前
@knightdf
import sys
from PyQt5.QtWidgets import QMainWindow,QApplication,QWidget
from untitled import *
from PyQt5.QtWidgets import QFileDialog
from multiprocessing import Pool
from PyQt5.QtCore import QObject,pyqtSignal,QThread
import time,os
class LoadFiles(QObject):
run_end=pyqtSignal()
def __init__(self):
super(LoadFiles, self).__init__()
def run(self):
testFL = [1, 2, 3, 4, 5, 6]
pool = Pool(6)
pool.apply_async(self.work)
pool.close()
pool.join()
self.run_end.emit()
def work(self):
# fn: 函数参数是数据列表的一个元素
fn=100
print('当前进程: {}'.format(os.getpid()), time.time())
time.sleep(10)
print(fn * fn)
class PrecessTest(QMainWindow,Ui_MainWindow):
def __init__(self):
super(PrecessTest, self).__init__()
self.setupUi(self)
self.pushButton.clicked.connect(self.load_files)
def load_files(self):
self._loadThread=QThread()
self.loadThread=LoadFiles()
self.loadThread.run_end.connect(self.stop_thread)
self.loadThread.moveToThread(self._loadThread)
self._loadThread.started.connect(self.loadThread.run)
# openfile_name = QFileDialog.getOpenFileNames(self,'选择文件',"./","TDMS Files(*.tdms)")
# print(openfile_name)
self._loadThread.start()
print('现在线程状态 :', self._loadThread.isRunning())
def stop_thread(self):
self._loadThread.quit()
self._loadThread.wait()
print('现在线程状态 :', self._loadThread.isRunning())
if __name__ == '__main__':
app=QApplication(sys.argv)
ui=PrecessTest()
ui.show()
sys.exit(app.exec_())
你好,我简单的写了一下,这样的话就是不能开多进程,因为开启多进程的部分在 windows 上应该在__main__:的下面,我就不知道如何操作了,主要的问题应该是在子线程下面无法创建多进程?
我是新人,没办法使用 gist 添加外部链接不好意思。。。