示例#1
0
    def __write_signal(self, signum=None):
        """Writes the given signal integer signum to the signal file.

        """
        signum = int(signum)
        if not is_valid_type(signum, int):
            raise ValueError("Signal must be an integer number.")

        signals = self.read_signals()

        if signum not in signals:
            signals.append(signum)
            signals = " ".join(str(i) for i in signals)
            with open(os.path.join(self.checkpoint_dir, "signals"), "w") as signal_file:
                signal_file.write(signals)
示例#2
0
    def register_signal(self, signum=None):
        """
        Register a signal that will trigger signal_handler().
        
        """
        if not is_valid_type(signum, int):
            raise ValueError("Signal must be an integer number.")

        if signum in self.checkpoint_signals:
            raise KeyError(
                "The signal {} is already registered for checkpointing.".
                format(signum))

        signal.signal(signum, self.signal_handler)
        self.checkpoint_signals.append(signum)
        self.write_signal(signum)
示例#3
0
 def test_is_valid_type(self):
     # basic types
     self.assertFalse(utils.is_valid_type(None, int))
     self.assertFalse(utils.is_valid_type('12', int))
     self.assertFalse(utils.is_valid_type(0.99, int))
     self.assertFalse(utils.is_valid_type(12, float))
     self.assertFalse(utils.is_valid_type(1234, str))
     self.assertTrue(utils.is_valid_type(1.0, float))
     self.assertTrue(utils.is_valid_type(12345, int))
     self.assertTrue(utils.is_valid_type('123', str))
     self.assertTrue(utils.is_valid_type(np.array([123.])[0], float))
     self.assertTrue(utils.is_valid_type(np.array([1234])[0], int))
     self.assertTrue(utils.is_valid_type(np.array([True])[0], bool))
     # numpy types
     self.assertTrue(utils.is_valid_type(
         np.array([12], dtype=int)[0], int))
     self.assertTrue(utils.is_valid_type(
         np.array([12], dtype=int)[0], int))
     self.assertTrue(utils.is_valid_type(
         np.array([1.], dtype=float)[0], float))
     self.assertTrue(utils.is_valid_type(
         np.array([1.], dtype=np.float64)[0], float))