Пример #1
0
    def test_profile_df(self):
        def simple():
            def simple2():
                df = pandas.DataFrame([{
                    "A": "x",
                    "AA": "xx",
                    "AAA": "xxx"
                }, {
                    "AA": "xxxxxxx",
                    "AAA": "xxx"
                }])
                return df2rst(df)

            return simple2()

        rootrem = os.path.normpath(
            os.path.abspath(os.path.join(os.path.dirname(rootfile), '..')))
        ps, df = profile(simple, rootrem=rootrem, as_df=True)  # pylint: disable=W0632
        self.assertIsInstance(df, pandas.DataFrame)
        self.assertEqual(df.loc[0, 'namefct'].split('-')[-1], 'simple')
        self.assertNotEmpty(ps)
        df = profile2df(ps, False)
        self.assertIsInstance(df, list)
        self.assertIsInstance(df[0], dict)
        df = profile2df(ps, True)
        self.assertIsInstance(df, pandas.DataFrame)
Пример #2
0
    def test_profile_graph(self):
        calls = [0]

        def f0(t):
            calls[0] += 1
            time.sleep(t)

        def f1(t):
            calls[0] += 1
            time.sleep(t)

        def f2():
            calls[0] += 1
            f1(0.1)
            f1(0.01)

        def f3():
            calls[0] += 1
            f0(0.2)
            f1(0.5)

        def f4():
            calls[0] += 1
            f2()
            f3()

        ps = profile(f4)[0]  # pylint: disable=W0632
        profile2df(ps, verbose=False, clean_text=lambda x: x.split('/')[-1])
        root, nodes = profile2graph(ps, clean_text=lambda x: x.split('/')[-1])
        self.assertEqual(len(nodes), 6)
        self.assertIsInstance(nodes, dict)
        self.assertIsInstance(root, ProfileNode)
        self.assertIn("(", str(root))
        dicts = root.as_dict()
        self.assertEqual(10, len(dicts))
        text = root.to_text()
        self.assertIn("1  1", text)
        self.assertIn('        f1', text)
        text = root.to_text(fct_width=20)
        self.assertIn('...', text)
        root.to_text(sort_key=SortKey.CUMULATIVE)
        root.to_text(sort_key=SortKey.TIME)
        self.assertRaise(lambda: root.to_text(sort_key=SortKey.NAME),
                         NotImplementedError)
        js = root.to_json(indent=2)
        self.assertIn('"details"', js)
        js = root.to_json(as_str=False)
        self.assertIsInstance(js, dict)
Пример #3
0
    def test_profile_df_verbose(self):
        calls = [0]

        def f0(t):
            calls[0] += 1
            time.sleep(t)

        def f1(t):
            calls[0] += 1
            time.sleep(t)

        def f2():
            calls[0] += 1
            f1(0.1)
            f1(0.01)

        def f3():
            calls[0] += 1
            f0(0.2)
            f1(0.5)

        def f4():
            calls[0] += 1
            f2()
            f3()

        ps = profile(f4)[0]  # pylint: disable=W0632
        df = self.capture(lambda: profile2df(ps, verbose=True, fLOG=print))[0]
        dfi = df.set_index('fct')
        self.assertEqual(dfi.loc['f4', 'ncalls1'], 1)
        self.assertEqual(dfi.loc['f4', 'ncalls2'], 1)
Пример #4
0
    def test_profile_graph_recursive1(self):
        def f0(t):
            if t < 0.1:
                time.sleep(t)
            else:
                f0(t - 0.1)

        def f4():
            f0(0.15)

        ps = profile(f4)[0]  # pylint: disable=W0632
        profile2df(ps, verbose=False, clean_text=lambda x: x.split('/')[-1])
        root, nodes = profile2graph(ps, clean_text=lambda x: x.split('/')[-1])
        self.assertEqual(len(nodes), 3)
        text = root.to_text()
        self.assertIn("    f0", text)
        js = root.to_json(indent=2)
        self.assertIn('"details"', js)