我想知道Python在某些代码元素的执行顺序方面是否与C有类似的问题。
例如,我知道在C语言中,有时不能保证某个变量在另一个变量之前初始化。或者仅仅因为一行代码在另一行代码之上,就不能保证它在它下面的所有代码之前实现。
Python也是这样吗?例如,如果我打开一个数据文件,读入数据,关闭文件,然后做其他事情,我知道在我关闭文件后的行执行之前,文件是关闭的吗??
我问这个问题的原因是,我试图读入一个大的数据文件(1.6GB),并使用这个python模块来完成我在数据上的工作。运行此模块时,会收到以下错误消息:File "/glast01/software/ScienceTools/ScienceTools-v9r15p2-SL4/sane/v3r18p1/python/GtApp.py", line 57, in run
input, output = self.runWithOutput(print_command)
File "/glast01/software/ScienceTools/ScienceTools-v9r15p2-SL4/sane/v3r18p1/python/GtApp.py", line 77, in runWithOutput
return os.popen4(self.command(print_command))
File "/Home/eud/jmcohen/.local/lib/python2.5/os.py", line 690, in popen4
stdout, stdin = popen2.popen4(cmd, bufsize)
File "/Home/eud/jmcohen/.local/lib/python2.5/popen2.py", line 199, in popen4
inst = Popen4(cmd, bufsize)
File "/Home/eud/jmcohen/.local/lib/python2.5/popen2.py", line 125, in __init__
self.pid = os.fork()
OSError: [Errno 12] Cannot allocate memory
>>>
Exception exceptions.AttributeError: AttributeError("Popen4 instance has no attribute 'pid'",) in > ignored
我假设这与我读取的数据大小有关(它有17608310行和22列)。
我想,如果我在读取数据后立即关闭打开的文件,这可能会有帮助,但没有。这导致我思考代码行的执行顺序,因此我提出了问题。
谢谢