2017-01-02 1 views
2

У меня есть общий вопрос отладки в Python (PyCharm IDE, если это имеет значение)Python: как сохранить текущие переменные во время отладки?

Допустим, у меня есть код, который состоит из 2 блоков:

Code block 1 (takes very long to run) 
Code block 2 (where I want to debug) 

Есть ли способ, чтобы сохранить текущие переменные в конце работающего блока кода 1, чтобы я мог «перемотать назад» обратно в эти состояния переменных и отлаживать оттуда, не перезапустив весь скрипт для пересчета этих переменных?

ответ

1

Я не знаю общего решения этой проблемы. Но решение для конкретных приложений может быть создано с использованием различных методов для сериализации объектов, но я бы предложил pickle для этой проблемы.

Как и многие другие, есть небольшой пример уже на SO.

2

Вы можете, безусловно, «сохранить» текущие переменные в конце работающего кода 1. Просто сохраните переменные в словаре и напишите это в файл после завершения первого кода.

Вот очень минимальный пример, так как вы не представили данные:

import csv 

# code block 1 
for i in range(1000000): # meant to simulate a "long" time 
    var1 = 2*i 
    var2 = 4*i 

# basically this is a log that keeps track of the values of these variables 
to_save = {'var1': var1, 'var2': var2} 

# write that dictionary to a file 
with open('my_log.csv', 'w+') as f: 
    w = csv.DictWriter(f, to_save.keys()) 
    w.writeheader() 
    w.writerow(to_save) 

# continue with code block 2 
for i in range(1000): 
    var1 = "BLAH" 
    var2 = "BLAH BLAH" 
Смежные вопросы