How to fix "can't pickle etree._XSLTResultTree objects"?

Viewed 100
def xslt_transform(self, procnum, source):
    result = self.etree_xslt( source, **self.params)
    self.return_dict[procnum] = result

def _transform(self, input, output):
    # input, output: binary stream

    from lxml import etree
    source = etree.parse(input)
    logger.info('_lxml.xslt(%s) start',
                os.path.basename(self.xsl_path))
    #result = self.etree_xslt(source, **self.params)
    logger.info('_lxml.xslt(%s) end',
                os.path.basename(self.xsl_path))
    jobs = []
    for i in range(4):            
        proc = multiprocessing.Process(target=self.xslt_transform, args=(i,source))
        print("proc==%s" % proc)
        jobs.append(proc)
        proc.start()
    for proc in jobs:
        proc.join()
    result = self.return_dict.values()

Error message: TypeError: can't pickle lxml.etree._XSLTResultTree objects

0 Answers
Related