JVM может обеспечить персистентность снимка?

В вашем примере вы можете устранить глобальные переменные, зарегистрировав лямбда-функцию для кнопки; эта лямбда-функция собирает значение te в записи и передает его в качестве параметра print_name.

import tkinter as tk

def print_name(text=''):   # <- now receives a value as parameter
    print(text)

def main():
    main_window = tk.Tk()
    entry_location = tk.Entry(main_window)
    tk.Button(main_window, text="Print Name", command=lambda: print_name(entry_location.get())).pack()
    entry_location.pack()
    main_window.mainloop()

main()

Примечание:

Это отвечает частному случаю вашего примера; это не общий ответ на полное уничтожение глобалов. Альтернативные подходы могут заключаться в размещении переменных, необходимых глобально, в словаре или списке, что позволяет их модифицировать в локальных пространствах, но, в конце концов, это может стать более сложным, чем использование надлежащего класса.
Как предполагает @AndrasDeak, лучше избегать импорта звездочек.

13
задан mattrepl 4 March 2009 в 15:44
поделиться

2 ответа

Был JSR 323, предложенный для этого некоторое время назад, но он был отклонен. Можно найти некоторые ссылки в тех статьях об исследовании позади этого и что оно взяло бы. Это было главным образом отклонено как идея, которая была слишком незрелой.

Я услышал о по крайней мере одном запуске (к сожалению, не вспоминают имя), который работал над технологией виртуализации по гипервизору (вероятно, Xen), который становился достаточно близким к способности переместить JVMs, даже включая вещи как судьи файловой системы и конечные точки сокета. Поскольку они были на уровне гипервизора, у них был доступ ко всему тому материалу. Путем сцепления этого и JVM, у них было большинство частей. Я думаю, что они, возможно, гибли все же.

Самой близкой вещью, которую можно получить сегодня, является Терракота, которая позволяет Вам кластеризировать часть своей "кучи" JVM, храня ее в массиве сервера, который может быть сделан персистентным. На запуске JVM Вы соединяетесь с кластером и можете продолжить использовать независимо от того, что части Вашей "кучи" указаны, как кластеризируется. Фактические объекты даны сбой в по мере необходимости.

9
ответ дан 2 December 2019 в 00:59
поделиться

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

1
ответ дан 2 December 2019 в 00:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: