我想知道 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 <bound method Popen4.__del__ of <popen2.Popen4 instance at 0x9ee6fac>> ignored
我假设它与我读入的数据的大小有关(它有 17608310 行和 22 列)。我想也许如果我在读入数据后立即关闭我打开的文件,这会有所帮助,但它没有。这让我想到了代码行的执行顺序,因此我提出了问题。
谢谢