我之所以问这个问题,是因为我不能解决Python/Django个问题中的一个(实际上在纯Python中是可以的),这会导致RuntimeError: tcl_asyncdelete async handler deleted by the wrong thread个问题.这在某种程度上与我在Django中渲染matplotlib个情节的方式有关.我的做法是:

...
import matplotlib.pyplot as plt
...
fig = plt.figure()
...
plt.close()

我极大地简化了我的代码.但问题是-即使我只有一行代码:

fig = plt.figure()

我看到这个RuntimeError正在发生.如果我知道在Python/Django中关闭/清理/销毁情节的正确方法,我希望我能解决这个问题.

推荐答案

默认情况下,matplotlib使用tk gui工具包,当您在不使用该工具包的情况下渲染图像(例如,将其渲染为文件或字符串)时,matplotlib仍会实例化一个不显示的窗口,从而导致各种问题.为了避免这种情况,您应该使用Agg后端.它可以像这样被激活--

import matplotlib
matplotlib.use('Agg')
from matplotlib import pyplot

有关更多信息,请参阅matplotlib文档--http://matplotlib.org/faq/howto_faq.html#matplotlib-in-a-web-application-server

Django相关问答推荐

Django显示交叉表格

获取 Django (postgres) 中带注释字段的平均值

Django 注释(),计数()

有什么方法可以自动设置 Debug True Django application

表单集中的每个表单验证

PyCharm:强制 Django 模板语法突出显示

Django rest框架覆盖ViewSet中的page_size

Django RESTful API - django-piston vs. django-tastypie

验证 Django 模型对象的正确方法?

如何从 django 自定义中间件类返回 rest_framework.response 对象?

如何在 django-rest-framework 中为 API 使用 TokenAuthentication

Heroku - 在 Django 应用程序中处理静态文件

如何在 django 中仅获取表的特定列?

找不到 msguniq.确保您安装了 GNU gettext 工具 0.15 或更新版本. (Django 1.8 和 OSX ElCapitan)

AWS Cognito 作为网站的 Django 身份验证后端

如何获取 pytz 时区的通用名称

Django admin:使字段在添加中可编辑但不可编辑

在 Python 中生成 API KEY 和 SECRET 的最简单和最安全的方法是什么

如何获取 Django 模型字段对象的值

从 git 存储库中删除并忽略所有具有扩展名的文件