+def error_surface(im_l, a, b, c, d, hough, size, v1):
+ import matplotlib.pyplot as plt
+ from matplotlib import cm
+ import multiprocessing
+ import time
+ import sys
+ import pickle
+
+ X = []
+ Y = []
+ Z = []
+ s = 0.001
+ k = 250
+ for i in range(-k, k):
+ X.append(range(-k, k))
+ Y.append(2*k*[i])
+
+ tasks = [(X[x], Y[x], im_l, a, b, c, d, s, v1, k, hough, size) for x in xrange(0, 2 * k)]
+ #everything is passed by value here; can it somehow be passed by reference?
+
+ pool = multiprocessing.Pool(None)
+
+ start = time.time()
+ Z = pool.map(job, tasks, 1)
+ print time.time() - start
+
+ s_file = open('surface' + str(k), 'w')
+ pickle.dump((X, Y, Z), s_file)
+ s_file.close()
+ plt.imshow(Z, cmap=cm.jet, interpolation='bicubic',
+ origin='upper', extent=(-k, k, -k, k), aspect='equal')
+ plt.colorbar()
+
+ plt.show()
+
+ sys.exit()