2015-10-24 2 views
2

Возможно ли запустить код Python, который генерирует фигуру (или цифры) и удерживать эти цифры открытыми даже после завершения программы?Сохранение рисунков matplotlib после завершения программы

В настоящее время, когда я использую show() в конце моего кода, выполнение программы $ python somecode.py останавливается, пока я не закрою фигуру (или цифры). Таким образом, использование терминала невозможно.

Нужно ли мне каким-либо образом назначить другой идентификатор задания для каждой фигуры, чтобы цифры работали отдельно от основной программы? Если да, то как я могу это сделать?

Эта потребность становится очевидной, когда требуется выполнить программу с ограниченным количеством раз, с различным входом и без необходимости сохранять каждую результирующую фигуру в виде (отдельного) файла. Это удобно для быстрого сравнения.

Очевидным решением является запуск программы на отдельных сеансах терминала.

+0

Если вы уже знаете очевидное решение, почему бы не использовать его? – cel

+0

Кажется, что над убить, чтобы открыть другой терминал. Должно быть более простое решение для этого права? Одна проблема с открытием другого терминала заключается в том, что вы должны делать это каждый раз, когда хотите запустить еще одно симуляцию. Это просто вызывает беспорядок. Вместо того, чтобы просто открывать несколько фигур из разных симуляций, у вас есть несколько терминалов. – imranal

+0

@cel, потому что часто существуют лучшие решения. [Как будут проиллюстрированы конструктивные ответы] (http: // stackoverflow.com/help/behavior) – DilithiumMatrix

ответ

2

Чтобы изображение отображалось, питон все еще должен работать. Если python все еще запущен, то в стандартном использовании вы не сможете использовать терминал.

В целом, с этим типом рабочего процесса можно использовать ipython, где вы можете легко запустить нужную программу/код/​​скрипт, а затем продолжить использовать интерактивный интерпретатор.

Альтернативные решения включают в себя:
- Moving the running process to the background
- Running the process in the background
- Запуск процесса в gnu screen.

+0

Большое спасибо за отображение нескольких способов, которыми я могу справиться с этим! – imranal

+0

Даже с IPython использование 'show()' останавливает сеанс до закрытия фигуры. – imranal

+0

@imranal вам нужно использовать 'show (block = False)', чтобы вернуть запрос. – DilithiumMatrix

2

Не уверен, что это то, что вам нужно, но вы можете, конечно, начать python в качестве фонового процесса в своем терминале, используя &.

Как это:

$ python somecode.py & 
$ ...   # control is returned here immediately 

Он начнет python в фоновом режиме и возвращает управление к терминалу немедленно. Через некоторое время окно графика появится без блокировки терминала. Вы можете запускать несколько экземпляров python таким образом, в результате чего одновременно открываются окна с несколькими окнами, сохраняя при этом терминал пригодным для использования.

Обратите внимание, что вы также можете переместить процесс на задний план после его запуска. После

$ python somecode.py 

терминал заблокирован, но вы можете нажать ctrl-z в терминале с последующим bg, чтобы превратить процесс в фоновом процессе.

Это, конечно, общая функциональность оболочки, не связанная с Python.

+0

Конечно! Это именно то, что мне нужно. Хотя я должен сказать, что есть недостаток, когда я это делаю. Я просто хочу, чтобы цифры существовали после завершения выполнения программы. Однако, поскольку я запускаю программу (которая все еще находится в фоновом режиме), которая поглощает много памяти. Для просто отображения некоторых цифр - в моем случае это 80 МБ на выполнение python. – imranal

+0

Действительно, это всего лишь обходной путь. – WhiteViking

Смежные вопросы