【问题标题】:showing "Not responding" while using large data使用大数据时显示“无响应”
【发布时间】:2015-05-04 08:44:49
【问题描述】:

我为分类器构建了一个APP。我使用wxpython 构建图形界面。当我尝试使用像13,00,000 这样的大数据训练分类器时会出现问题。

vectorizer = TfidfVectorizer()
XT = vectorizer.fit_transform(self.TrainData)   # Not responding

classifier = svm.LinearSVC()
classifier.fit(XT, self.y_train)

vectorizer.fit_transform 这实际上是在后面工作。但是窗口显示没有响应。

有什么问题?我该如何解决这个问题?

【问题讨论】:

  • 不管怎样,如果没有 GUI,根据我的经验,SVM 需要很长时间来训练,所以这可能不会出乎意料
  • 没有 GUI,训练需要 8 分钟。但是在 5 秒后使用 GUI,它会显示 not responding
  • 这听起来与 GUI 等待消息/响应的方式有关,它最终是否完成?如果不是,您应该考虑某种形式的回调,它不会冻结 gui 并在训练完成时发出信号
  • 我该怎么做? form of callback ?
  • 我无法为您提供帮助,我不了解 wxpython,但这就是我处理这个问题的方式,也许可以看看关于这个的文档或其他帖子跨度>

标签: python python-2.7 scikit-learn wxpython


【解决方案1】:

任何长时间运行的进程都可能阻塞 GUI 的主循环。我怀疑你在这里做这个。当主循环被阻塞时,您的 UI 将冻结。为了解决这个问题,您应该将您的fit_transform 代码放入一个线程并在那里运行它。完成后,您可以使用 wxPython 的一种线程安全方法来告诉 UI 进行更新(即 wx.CallAfter 或 wx.PostEvent)。

您可以在以下位置找到使用线程和 wxPython 的示例:

【讨论】:

    猜你喜欢
    • 2021-11-24
    • 2020-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-25
    • 1970-01-01
    • 2022-11-25
    相关资源
    最近更新 更多