ich arbeite mich grade in multiprocessing ein und bin auf ein Problem gestoßen. Ich starte aus einer GUI einen separaten Arbeiterthread aus diesem wiederum möchte ich Prozesse spawnen, die mir bei einer berechnung helfen. Leider klappt das ganze so nicht in Qt. Ich kann schlecht einschätzen ob es an Qt liegt oder einfach an einem generellen Problem, deswegen poste ich es mal im allgemeinen Forum.
Hier mein Minimalbeispiel, das das Problem darstellt:
Code: Alles auswählen
import sys, time, multiprocessing
from PyQt4 import QtGui, QtCore
forest_reference = []
def start():
forest = RunForestRun()
forest_reference.append(forest)
forest.start()
app = QtGui.QApplication(sys.argv)
widget = QtGui.QWidget()
button = QtGui.QPushButton("Spawn Forest!")
layout = QtGui.QVBoxLayout()
widget.setLayout(layout)
layout.addWidget(button)
widget.resize(250, 150)
widget.setWindowTitle('simple')
widget.show()
button.clicked.connect(start)
def heavy_calculation(input):
time.sleep(1)
print input*2
return input*2
class RunForestRun(QtCore.QThread):
def __init__(self):
QtCore.QThread.__init__(self)
def run(self):
for i in range(4):
print i
time.sleep(0.5)
p = multiprocessing.Pool()
result = p.map(heavy_calculation, range(20))
print result
if __name__ == "__main__":
sys.exit(app.exec_())
Grüße,
anogayales