df_ = pool.apply_async(func=self.select_data_one, args=(table_name, page_no, page_size))
应用func函数,args里面放函数的参数
apply_async(self, func, args=(), kwds={}, callback=None,
error_callback=None):
'''
Asynchronous version of `apply()` method.
'''
问题
df_results 本身就是一个dataframe格式的list
为什么不能直接用concat联结起来
而要使用result.get()
df_results = []
for page_no in range(1, page_num+1):
df_ = pool.apply_async(func=self.select_data_one, args=
(table_name, page_no, page_size)) #
df_results.append(df_)
logger.info('..............进程开始................')
pool.close()
pool.join()
logger.info('..........数据融合.........')
end_result = [result.get() for result in df_results]
end_df = pd.concat(end_result, axis=0, sort=False)
解决方法
由于pool.apply_async() 这方法返回的是结果是值的对象,不是值本身,所以要加get()方法
有点类似groupby后不聚合 不显示,只能用list()才可以显示