如何通过多处理绘制多条线?

时间:2014-07-15 00:32:39

标签: python matplotlib multiprocessing

from pylab import *;
from multiprocessing import Pool;

x = np.load('x.npy'); # Shape: 50001
y = np.load('y.npy'); # Shape: 50001x10240
z = np.arange(10240);

figure(num=0, figsize=(16,10));
subplots_adjust(left=0.08, bottom=0.08, right=0.92, top=0.92, wspace=0., hspace=0.);
ax1 = subplot(111);
ax1.set_xlabel('X', size=20); ax1.set_ylabel('Y', size=20);
ax1.set_ylim(50,200);
for tl in ax1.get_yticklabels(): tl.set_fontsize(20);
for tl in ax1.get_xticklabels(): tl.set_fontsize(20);
title('Title', size=20);

def f(i):
    ax1.plot(x, y[i], 'k-', alpha=0.005);

def handler():
    p = Pool(8);
    p.map(f,z);

if __name__ == '__main__':
    handler();
    savefig('image.png');

我有一个大的npy文件,其中10240个数据集的长度为50001,每个都要绘制在同一个图上。不幸的是,我得到的只是一个空白的情节,因为函数ax1.plot()内的f实际上并没有在真实情节的函数之外产生差异。

我该如何解决这个问题?如何让f以适当的永久方式操纵ax1

如果我没有并行化它就可以工作,但我找不到并行化的方法:(

1 个答案:

答案 0 :(得分:0)

尝试添加:

global ax1

在f()的开头。