永久性地将物体保存在闪亮的内存中

时间:2015-07-14 19:48:13

标签: r shiny rstudio-server

我了解我可以将所有用户会话中的某些对象放在server.R中,但在shinyServer()的调用之外。但即使没有人使用该应用程序,有没有办法将这些对象保存在内存中?我需要很长时间才能从磁盘加载这些共享对象,因此我希望通过保持加载并永久性地为用户加快速度。#/ p>

2 个答案:

答案 0 :(得分:3)

创建一个文件global.R并将那些加载数据的代码放在那里。但是,如果服务器休眠或重置内存中的信息将丢失。

shinyapps.io有一个“Instance Idle Timeout”设置,你可以设置为让应用程序保持更长时间。您还可以在配置文件中为闪亮服务器设置一个值。见下面的链接

http://rstudio.github.io/shiny-server/latest/#application-timeouts

答案 1 :(得分:0)

您可能想要考虑的一件事是使用全局/封闭环境赋值运算符:

assign()

这可以用来将变量暴露给全局环境,并在Shiny会话之间持续存在。

或者,您可以选择使用import java.io.File; import java.io.FileNotFoundException; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Random; import java.util.Scanner; public class ScrambleWords { private static Scanner file; private static List<String> words = new ArrayList<String>(); private static List<Character> characters = new ArrayList<>(); public static void openFile() { try { file = new Scanner(new File("words.txt")); } catch (FileNotFoundException e) { System.out.println("File Not Found"); e.printStackTrace(); } catch (Exception e) { System.out.println("IOException"); } } public static String randomWord() { Random r = new Random(); while(file.hasNext()) { words.add(file.next()); } Collections.shuffle(words); String randomWord = words.get(r.nextInt(words.size())); return randomWord; } public static String readScramble(String randomWord) { for(char ch : randomWord.toCharArray()) { characters.add(ch); } Collections.shuffle(characters); StringBuilder sb = new StringBuilder(); for(char ch: characters) { sb.append(ch); } return sb.toString(); } public static void main(String[] args) { openFile(); String scramble = readScramble(randomWord()); System.out.println("Scramble Word is: " + scramble); String random = randomWord(); System.out.println("Random Word is: " + random); } } 功能选择要设置的环境;我相信,有一个处理环境的系统变量:{​​{3}}