我有一个脚本链接显示为热图,虽然我注意到它只保存一次然后似乎停止保存。我再挖了一下,发现在它已经运行一次后它实际上从未完成。脚本完成了,所以我不明白为什么它应该失败。只是因为matplotlib.pyplot
是一个问题,我尝试在函数开始时重新导入它,但它没有做任何事情。
以下是重现问题的一些代码:
import numpy as np
import matplotlib.pyplot as plt
from threading import Thread
def plot(data, save_path):
print 1
#gets stuck here
plt.imshow(data)
print 2
plt.colorbar()
print 3
plt.title('test')
print 4
plt.savefig(save_path)
print 5
plt.close()
print 6
w, h = 640, 480
heatmap = np.zeros(h * w)
heatmap = heatmap.reshape((h, w))
tl = Thread(target=plot, args=(heatmap, 'C:/Users/Peter/Python/test.png'))
tl.start()
tl.join()
t2 = Thread(target=plot, args=(heatmap, 'C:/Users/Peter/Python/test.png'))
t2.start()
t2.join()
结果是:
1
2
3
4
5
6
1
第二个挂起plt.imshow(data, cmap=cm)
上的脚本。我该如何解决这个问题?如果它没有线程化,问题就会消失,但我更愿意将它保存在一个单独的线程中。