Мне было интересно, имеет ли Python аналогичные проблемы, такие как C, относительно порядка выполнения определенных элементов кода.Порядок выполнения Python
Например, я знаю, что в C временами говорят, что не гарантируется, что какая-то переменная инициализируется перед другой. Или только потому, что одна строка кода выше другой, не гарантируется, что она реализована перед всеми ниже нее.
Это то же самое для Python? Например, если я открываю файл данных, читаю данные, закрываю файл, а затем делаю другие вещи, я точно знаю, что файл закрыт до того, как строки после закрытия файла будут выполнены ??
Причина, по которой я спрашиваю, заключается в том, что я пытаюсь прочитать в большом файле данных (1,6 ГБ) и использовать этот модуль 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 столбцов). Я подумал, что, возможно, если бы я закрыл файл, который я открыл сразу после того, как прочитал данные, это поможет, но это не так. Это заставило меня задуматься о порядке выполнения строк кода, следовательно, о моем вопросе.
Благодаря
Думаю, вам нужно объяснить себя лучше. В C задано 'f(); g(); ',' f() 'гарантированно оценивается до' g() '. В 'a = f() + g();' порядок оценки не указан в C. Python гарантирует оценку слева направо: http://docs.python.org/reference/expressions.html#evaluation- заказывайте –
«вопросами», вы имеете в виду «правила», не так ли? – KevinDTimm
Да, я знал, что не очень хорошо себя объясняю, извините, это связано с тем, что он не полностью понимает все это, но пытается тоже :) Алок: Да, это то, о чем я думал. Я думал, что это также переносится на вещи, например, когда файл может закрыться. Я знаю, что могу сказать, что определить две разные функции и назвать вторую (по второму, я имею в виду только нижнюю часть кода) от первого, так что в этом смысле тоже не обязательно делается по порядку. kevindtimm: Да, я имел в виду правила.Думаю, я просто использовал проблемы с работой, потому что это дало мне проблемы :) – Jamie