我对多处理非常陌生,所以我可能会做一些非常愚蠢的事情。所以简而言之:
threading
来防止窗口挂起: def _run_calc(self):
"""
Run data processing in a separate thread to prevent the main
window from freezing.
"""
t = threading.Thread(target=self._process_data)
t.start()
def _calculate_components(self):
processes = []
if self.mineralogy.get():
self.minerals = self._get_mineralogy_components()
miner_worker = Process(target=self.calculate_mineralogy())
processes.append(miner_worker)
if self.porosity.get():
porosity_worker = Process(target=self.calculate_porosity())
processes.append(porosity_worker)
if self.poi.get():
poi_worker = Process(target=self.calculate_poi())
processes.append(poi_worker)
if self.water_table.get():
owt_worker = Process(target=self.calculate_owt())
processes.append(owt_worker)
for i in processes:
i.start()
for i in processes:
i.join()
self._add_components_to_data()
我很确定我在这里误解了一些东西并且做错了一些事情。如何让进程并行运行?