如何通过多重处理创建许多散景图?

问题描述 投票:0回答:1

我想通过多重处理来加快散景中人物的产生:

jobs = []
for label in list(peakLabels):  
    args = {'data': rt_proj_data[label],
                    'label': label,
                    'tools': tools,
                    'colors': itertools.cycle(palette),
                    'files': files,
                    'highlight': highlight}
    jobs.append(args)

pool = Pool(processes=cpu_count())
m = Manager()
q = m.Queue()
plots = pool.map_async(plot_peaks_parallel, jobs)
pool.close()
pool.join()      

def plot_peaks_parallel(args):
    data = args['data']
    label = args['label']
    colors = args['colors']
    tools = args['tools']
    files = args['files']
    highlight = args['highlight']

    p = figure(title=f'Peak: {label}', 
               x_axis_label='Retention Time', 
               y_axis_label='Intensity',
               tools=tools)
    ...
    return p

尽管我遇到了这个错误:

MaybeEncodingError:发送结果出错:'[Figure(id ='1078',...)]'。原因:'PicklingError(“无法在0x7fc7df0c0ea0上进行酸洗:在bokeh.models.sources上的属性查找ColumnDataSource。失败”)'

我可以对对象p做些什么,使其变为可腌制的吗?

bokeh
1个回答
0
投票

单个散景对象不能单独进行序列化,包括pickle。在Bokeh中进行序列化之前,最小的有意义的是Document,它是Bokeh对象的特定集合,保证相对于以下参考文献是完整的。但是,如果pickleDocument一起使用,我会感到惊讶(自从项目开始以来,您是第一个问这个问题的人,它从来都不是优先事项,甚至我所了解的也没有)。相反,我建议您是否要执行此类操作,以使用Bokeh自己的JSON序列化功能,例如json_item

json_item

这将在p_serialized = json.dumps(json_item(p)) 的上下文中正确地序列化p。然后,您可以将其传递给页面模板,以使用Bokeh JS嵌入API进行显示:

Document
© www.soinside.com 2019 - 2024. All rights reserved.