不应该从其他线程或其他进程访问GUI,应该做的是在启动线程和进程时发送文本信息:
from multiprocessing import Pool
import os
import sys
import threading
from PyQt5 import uic, QtWidgets
def fetchdata(value):
num, message = value
print(num, message)
return True
def processchain(message):
p = Pool(processes=15)
data = p.map(fetchdata, [(i, message) for i in range(1, 1000)])
print("results:", data)
def alltask(message):
threading.Thread(target=processchain, args=(message,), daemon=True).start()
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
ui_filename = os.path.join(os.path.dirname(os.path.realpath(__file__)), "estate.ui")
window = uic.loadUi(ui_filename)
def on_clicked():
message = window.lineEdit.text()
alltask(message)
window.pushButton.clicked.connect(on_clicked)
window.show()
sys.exit(app.exec_())