内核因奇怪的行为而死

Posted

技术标签:

【中文标题】内核因奇怪的行为而死【英文标题】:Kernel dies with strange behavior 【发布时间】:2021-03-16 12:19:46 【问题描述】:

我有一个显示奇怪行为的简单函数。我已经搜索了解释,但找不到任何解释。

def myfunc(frame):
  lol = []
  for i in range(frame.shape[0]):
    if frame.iloc[i,3] == 3:
      lol.append(frame.iloc[i,7])
  return np.asarray(lol,dtype=np.int32)

print('before')

x = myfunc(x)

print('after')

以上代码的结果是

之前 内核死了

def myfunc(frame):
  lol = []
  for i in range(frame.shape[0]):
    if frame.iloc[i,3] == 3:
      lol.append(frame.iloc[i,7])
  print('myfunc')
  return np.asarray(lol,dtype=np.int32)

print('before')

x = myfunc(x)

print('after')

然而,只需添加一个打印语句即可

之前 我的函数 之后 内核死了

打印语句是唯一的区别,我已经对此进行了测试,也许有 50 次。忽略我的其他问题(内核死了),我不知道为什么会这样。如果有任何见解,我将不胜感激。

【问题讨论】:

什么是 x? .... 对不起,我以为很清楚。 x 是一个熊猫数据框。 【参考方案1】:

我尝试使用示例数据重现错误,它对我来说效果很好。 您可以在 colab 环境中对您的数据进行相同的尝试并检查,如果没有出现错误,则问题可能是以下问题之一。

    您的数据很大,无法放入内存,您可以尝试在加载 csv 文件时指定 engine='python'df = pd.read_csv('input.csv', engine='python')。 您也可以将数据框拆分为多个数据框,然后再合并。 您可以使用 Tensorflow 的 tf.data 加载 CSV 文件并构建对大文件更有效的输入管道。

下面是带有示例数据的工作代码。

import tensorflow as tf
import pandas as pd
import numpy as np

df = pd.read_csv("/content/sample_data/mnist_train_small.csv") 
def myfunc(frame):
  lol = []
  for i in range(frame.shape[0]):
    if frame.iloc[i,3] == 3:
      lol.append(frame.iloc[i,7])
  return np.asarray(lol,dtype=np.int32)

print('before')

x = myfunc(df)

print('after')

结果:

before
after

【讨论】:

您的回答没有直接解决问题。我不是在询问内核死亡的可能原因。我在问奇怪的行为。我已经知道尝试加载大文件不是问题,因为我之前可以毫无问题地加载它。另外,我完全卸载了Anaconda,然后重新安装了Anaconda,内核死机问题就消失了。您可能对奇怪的行为有任何见解(这是我的帖子的目的)? 如果重新安装 Anaconda 对您有用,那么这可能是旧版本的 Tensorflow 和其他依赖库的原因。

以上是关于内核因奇怪的行为而死的主要内容,如果未能解决你的问题,请参考以下文章

Inotify:目录创建的奇怪行为

yum 包管理器关于退出代码的奇怪行为:

为啥我的 Gradle 构建会因退出代码 137 而死?

MySQL RDS 复制因 LOAD DATA INFILE 而死

无论是不是启用权利,Mac 应用程序都会崩溃(因权利而死)

AppKernel.php 奇怪的行为