Matplotlib多线程画图遇到的BUG
1.问题:
多线程处理算法后,对结果进行图示,出现BUG:消息里的图和文字全部错乱,仅有几组可视化图像正确。
多线程采用import threading库。
2.可能原因:
引入的 import matplotlib.pyplot as plt 是个全局变量,应该就是它引起的线程不安全。
3.解决办法:
- 觉得线程不安全,那就加锁
from threading import Lock, RLock
lock = Lock()
rlock = RLock() - 在plt画图函数前加锁
with lock:
Plt画图函数
加锁 Lock
缺点: 容易出现 deadlock 的情况, 需要注意
加锁后plt绘图正确,每个线程单独绘制自己的图像,但加锁会导致 deadlock 的情况,这个 case 不太容易出现,但还是要格外的小心。
参考: https://changchen.me/blog/20190204/matplot-thread-safing/