import multiprocessing as mp
from PyQt5.QtCore import QThread, pyqtSignal
from PyQt5.QtWidgets import QMainWindow, QApplication
from main import Ui_MainWindow
class TestThread(QThread):
InformationUpdate = pyqtSignal(list)
def init(self, Main_UI):
super(TestThread, self).init()
self.Main_UI = Main_UI
self.InformationUpdate.connect(self.Main_UI.assignment)
self.manager = mp.Manager
self.mp_lst = self.manager().dict()
self.length = len
def proc_func(self, i):
for n in range(5):
a = (i + n)
self.mp_lst[i] = a
def flow(self):
pool = mp.Pool()
for i in range(7):
pool.apply_async(self.proc_func, args=(i,))
pool.close()
pool.join()
print(self.mp_lst)
def run(self):
# while self.Main_UI.start:
self.flow()
class mainWindow(QMainWindow, Ui_MainWindow):
def init(self):
super().init()
self.setupUi(self)
self.start = False
self.pushButton.clicked.connect(self.kaishi)
def kaishi(self):
print('2')
self.start = True
self.Thread = TestThread(self)
self.Thread.start()
def assignment(self, temp):
self.listWidget.addItem(str(temp[0]))
self.listWidget_2.addItem(str(temp[1]))
self.listWidget_3.addItem(str(temp[2]))
self.listWidget_4.addItem(str(temp[3]))
self.listWidget_5.addItem(str(temp[4]))
self.listWidget_6.addItem(str(temp[5]))
self.listWidget_7.addItem(str(temp[6]))
import sys
if name == 'main':
app = QApplication(sys.argv)
Main = mainWindow()
Main.show()
sys.exit(app.exec_())
线程中使用进城池,字典self.mp_lst写不进去参数
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
2条回答 默认 最新
PENGCM 2022-09-01 18:01关注- 多进程管理器的共享字典有bug,官方有说明过,不知道最新版本有没有修复。
- 不建议使用管理器在本地进程间共享数据,管理器是一个单独的进程,涉及到多个锁和多次格式转换,读写性能也不高。管理器更适用于非本地进程间共享数据。
- 非要本地进程间共享数据,建议使用共享内存的方式。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报