Как бороться с блокировкой значений генератора?Python

Программы на Python
Ответить
Anonymous
 Как бороться с блокировкой значений генератора?

Сообщение Anonymous »

Я пытаюсь прочитать файлы .cif (химия) с помощью Pythons openbabel. Для большинства файлов в моей базе данных это работает отлично, независимо от их размера. Однако для нескольких файлов мой код блокируется, когда я пытаюсь получить выходные данные генератора. Вот мой код (для одного из файлов, где он не работает):

Код: Выделить всё

from openbabel import pybel

cif_file = 'annoying_structure.cif'

structure = pybel.readfile('cif', cif_file)  # this returns a generator
print(structure)

for smiles in structure:
print(smiles)  # this line never finishes
Я пытался отключить оператор печати по времени с помощью потоков или исключения тайм-аута сигнала, но ничего не помогло, и код по-прежнему блокируется. Когда я смотрю на переменные в своем отладчике, значение smiles также не загружается и время ожидания истекает через некоторое время.
Сам файл, насколько я вижу, не отличается от других файлов в наборе данных с точки зрения длины, содержания и т. д. Я использую эту базу данных:
https://archive.materialscloud.org/records/cjhyq-nr115
и проблемный файл (среди прочего) — linker99_CH_linker81_N_qtz_relaxed.cif, содержащийся в https://archive.materialscloud.org/reco ... download=1 (примечание: загрузка 1,1 ГиБ)
Любая помощь приветствуется!

Подробнее здесь: https://stackoverflow.com/questions/798 ... tor-values
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»