动态暂停和恢复Python程序

0 投票
2 回答
641 浏览
提问于 2025-04-17 23:50

我正在构建一个机器学习算法(比如神经网络),在这个算法中,类变量(也就是 numpy 矩阵)代表了系统的各种参数。

训练这个系统是通过不断更新所有的类变量来完成的。迭代的次数越多,效果就越好。我希望每天早上都能查看一下这些类变量,然后继续运行程序。

我是在一个交互式终端中调用这个程序的。以下是我想到的一些方法:

  1. 在终端打印出来 -> 矩阵太大了,没什么帮助。
  2. 保存到磁盘,然后在另一个终端中加载。
  3. set_trace(),但这需要提前知道什么时候暂停。

有没有办法在运行中暂停程序,修改类变量,然后再继续运行呢?

如果有人需要更多细节,可以在这里查看程序:github链接

2 个回答

3

如果你修改一下model.do_EM()这个方法,让它在每一步都保存当前的状态,并且检查一个配置文件,会怎么样呢?

 def do_EM(self, n_iteration = 10):
    self.visualizer.visualize(self.param_alpha, self.param_mu, self.param_sigma)
    for i in range(n_iteration):
      print "iteration:", i 
      self.step_E()
      print "done step_E. ",
      self.step_M()
      print "done step_M. "
      self.visualizer.visualize(self.param_alpha, self.param_mu, self.param_sigma)

      # Save current state
      self.log.write( ... )
      # Check for config changes
      self.config.update( ... )
4

我对numpy不太熟悉,不过这里有一个简单的类,可以实现暂停和恢复的功能:

class Program():

    def run(self):
        while 1:
            try:
                self.do_something()
            except KeyboardInterrupt:
                break

    def do_something(self):
        print("Doing something")


# usage:

a = Program()
a.run()

# will print a lot of statements

# if you hit CTRL+C it will stop
# then you can run it again with a.run()

撰写回答