我正在编写一个程序来查找给定字符串的所有子集。然而,它会导致一个名为Killed: 9
的错误。
class Strings(object):
def __init__(self,string):
self.list1=[]
self.string=string
def appendToList(self,ch1):
self.list1.append(ch1)
for i in self.list1:
self.list1.append(i+ch1)
def subset(self):
for ch in self.string:
self.list1=self.appendToList(ch)
print self.list1
obj=Strings('hello')
obj.subset()
您可以询问程序kill
该信号的含义:
$ kill -l | column
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
所以你的程序收到一个SIGKILL(可能是OOM杀手):
SIGKILL
默认操作:进程异常终止。
描述:Kill(无法捕获或忽略)。
C.f.谁";被杀死";我的过程,为什么?
当您每次迭代现有元素(在appendToList中)时都附加一个元素,并且不需要在subset
方法中赋值时,您将进入一个无限循环,请检查:
class Strings(object):
def __init__(self,string):
self.list1=[]
self.string=string
def appendToList(self,ch1):
self.list1.append(ch1)
# for i in self.list1: # no needed for loop is in subset
# self.list1.append(i+ch1)
def subset(self):
for ch in self.string:
self.appendToList(ch) # no need to assign to self.list1
print self.list1
obj=Strings('hello')
obj.subset()