'Using the globals argument of timeit.timeit

I am attempting to run timeit.timeit in the following class:

from contextlib import suppress
from pathlib import Path
import subprocess
from timeit import timeit


    class BackupVolume():
        '''
        Backup a file system on a volume using tar
        '''
        targetFile = "bd.tar.gz"
        srcPath = Path("/BulkData")
        excludes = ["--exclude=VirtualBox VMs/*",  # Exclude all the VM stuff
                    "--exclude=*.tar*"]            # Exclude this tar file

        @classmethod
        def backupData(cls, targetPath="~"):  # pylint: disable=invalid-name
            '''
            Runs tar to backup the data in /BulkData so we can reorganize that
            volume. Deletes any old copy of the backup repository.

            Parameters:
            :param str targetPath: Where the backup should be created.
            '''

            # pylint: disable=invalid-name
            tarFile\
                = Path(Path(targetPath /
                       cls.targetFile).resolve())
            with suppress(FileNotFoundError):
                tarFile.unlink()
            timeit('subprocess.run(["tar", "-cf", tarFile.as_posix(),'
                   'cls.excludes[0], cls.excludes[1], cls.srcPath.as_posix()])',
                   number=1, globals=something)

The problem I have is that inside timeit() it cannot interpret subprocess. I believe that the globals argument to timeit() should help but I have no idea how to specify the module namespace. Can someone show me how?



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source