0

Using multiprocessing Pool with PyQt signal gives pickle error, any way I can send my progress in the loop back to the GUI?

class Analysis(QObject):

    progress = pyqtSignal(str)
    
    def __init__(self, data):
        self.data = data
        self.result = []
        
    def worker_process(self, devices):
        for n1, n2 in itertools.product(self.data[devices[0]], self.data[devices[1]])
            if n1 == n2:
                self.result.append((n1, n2))
            self.progress.emit(f'Running on {device[0]} of network {n1} compare with {device[1]} of network {n2}')
            
    def run(self):
        devices = ['device_a', 'device_b', 'device_c', ...]
        pool = Pool(os.cpu_count() - 1)
        return_value = pool.map(self.worker_process, itertools.combinations(devices, 2)) <-- can't pickle Analysis object
eyllanesc
  • 235,170
  • 19
  • 170
  • 241
ReverseEngineer
  • 529
  • 1
  • 5
  • 18

0 Answers0