我想在一个类中使用多处理中的apply_async, 我的代码例如是:
class Try_multiprocess():
def multyprocese_chunks(self,chunks):
pool = Pool(processes=2)
site_id=564
site_st= 564
for chunk_ix, chunk in enumerate(chunks):
pool.apply_async(self.execute_chunk, args=(chunk, chunk_ix, site_id, site_st,))
print "{} wait for join".format(datetime.datetime.now())
pool.close()
pool.join()
print "{} after for join".format(datetime.datetime.now())
def execute_chunk(self, chunk, chunk_ix, site_id, site_st):
print "{} execute_chunk chunk : {} ".format(datetime.datetime.now(), chunk_ix)
,这不起作用(什么都没有打印,也没有错误),我在某处读到无法实例化实例方法的地方,但是有任何解决方法吗?也许与静态/类方法的?还是以其他方式而不是从类中提取所有方法?
答案 0 :(得分:0)
根据Python multiprocessing PicklingError: Can't pickle <type 'function'>,答案为否:
multiprocessing
只能将Python对象传输到可以腌制的工作进程。如果您无法按照unutbu所述重新组织代码,
https://thelaziestprogrammer.com/python/a-multiprocessing-pool-pickle还建议不要对泡菜对象进行多处理