Hom*_*ldo 6 python qt multithreading matplotlib pycharm
在PyCharm中,当我尝试使用其交互式控制台绘制某些内容时,例如:
In[2]: from matplotlib.pyplot import *
In[3]: x = range(5)
In[4]: y = range(5,10)
In[5]: plot(x,y)
WARNING: QApplication was not created in the main() thread.
Out[5]: [<matplotlib.lines.Line2D at 0x7fade916a438>]
In[6]: show()
Run Code Online (Sandbox Code Playgroud)
它打开一个窗口并崩溃。我必须停止控制台并启动一个新控制台。
当我在终端的ipython控制台中运行类似的操作时,它工作正常,看来错误仅在Pycharm中发生。
另一方面,如果使用import matplotlib.pyplot as plt它导入matplotlib 可以正常工作:
In[2]: import matplotlib.pyplot as plt
In[3]: x = range(5)
In[4]: y = range(5,10)
In[5]: plt.plot(x,y)
Out[5]: [<matplotlib.lines.Line2D at 0x7fd3453b72e8>]
In[6]: plt.show()
Run Code Online (Sandbox Code Playgroud)
但是,如果我同时做这件事,它也会崩溃(即使使用调用plot函数plt.plot):
In[2]: from matplotlib.pyplot import *
In[3]: import matplotlib.pyplot as plt
In[4]: x = range(5)
In[5]: y = range(5,10)
In[6]: plt.plot(x,y)
WARNING: QApplication was not created in the main() thread.
Out[6]: [<matplotlib.lines.Line2D at 0x7fade916a438>]
In[7]: plt.show()
Run Code Online (Sandbox Code Playgroud)
此外,当我在一个命令中运行所有命令时,它第一次起作用。但是,如果我尝试绘制其他时间,则会崩溃:
In[2]: from matplotlib.pyplot import *
...: x = range(5)
...: y = range(5,10)
...: plot(x,y)
...: show()
In[3]: plot(x,y)
WARNING: QApplication was not created in the main() thread.
Out[3]: [<matplotlib.lines.Line2D at 0x7fc68a3009e8>]
In[4]: show()
Run Code Online (Sandbox Code Playgroud)
因此,这与在使用*的导入中使用matplotlib库以及在首次导入后在交互式控制台中运行有关。我知道不建议使用通配符导入,但是有时这样做对于加快测试速度和减少冗长的工作很有用。
在网上寻找此警告,我只找到了这些
https://github.com/matplotlib/matplotlib/issues/13296 但我的情况似乎与多重处理无关。即使pycharm在幕后做某事,我也想知道为什么它改变了,因为我一个月前对此没有任何问题。
禁止警告“未在main()线程中创建QApplication” 和其他与C ++有关的帖子,这不是我的情况;
警告:QApplication不是在main()线程中创建的 ->与pycharm有关,但有一个与我的不同的附加错误
这没有太大帮助。任何人都知道发生了什么事以及如何解决?
眼镜:
我将此问题发送给 JetBrains:https ://youtrack.jetbrains.com/issue/PY-36136
他们尚未找到解决方案,但他们建议的解决方法如下:
在“文件”| “工具窗口”中禁用“显示绘图” 设置 | 工具| Python 科学.
这对我有用,尽管它没有在 PyCharm 窗口中绘制。
| 归档时间: |
|
| 查看次数: |
348 次 |
| 最近记录: |