一直在玩Python的绘图库,并遇到了matplotlib,似乎已经进行了战斗测试和验证。然而,我在线程中创建一个简单的情节时遇到了一个问题。matplotlib绘制在简单的线程中冻结
在本例中波纹管,虚拟类plotme方法是在一个线程连续运行两次,但它可以在第二次迭代卡/冻结。 最有可能是明显的,并与线程本身有关,但我没有发现它迄今。
import matplotlib.pyplot as plt
from numpy import arange, sin, pi
import threading
class Dummy():
def plotme(self, iteration = 1):
print "%ix plotting... " % iteration,
t = arange(0.0, 2.0, 0.01)
s = sin(2*pi*t)
plt.plot(t, s)
plt.xlabel('time (s)')
plt.ylabel('voltage (mV)')
plt.title('About as simple as it gets, folks')
#savefig("test.png") # irrelevant here
plt.close()
def threadme(self, iteration = 1):
thread_plot = threading.Thread(target=self.plotme,
args=(iteration,))
thread_plot.start()
thread_plot.join()
dummy = Dummy()
dummy.threadme(1)
dummy.threadme(2)
您是否知道在matplotlib.pyplot的命令不是安全的?您应该使用OOÜP方法,例如创建一个图形,一个轴对象,然后调用该轴对象上的方法,例如, 'ax.plot(...)' –