0

我在我的项目中使用 pylint,它运行超过 1 分钟,这对我来说太长了。如何获得项目中每个文件的具体运行时间?

这是我的研究:

github上的问题

如何加快pylint

你能给我一些关于这个问题以及如何加快 pylint 的建议吗?

提前致谢 !!!!

4

2 回答 2

1

pylint您可以通过生成多个进程并并行检查文件来加快速度。此功能通过-j命令行参数公开。如果提供的数字是0,那么将自动检测和使用 CPU 的总数。从输出pylint --help

-j <n-processes>, --jobs=<n-processes>
    Use multiple processes to speed up Pylint. Specifying
    0 will auto-detect the number of processors available
    to use. [current: 1]

在当前实现中并行运行检查存在一些限制。不能使用自定义插件(即--load-plugins选项),也不能使用初始化挂钩(即--init-hook选项)。

于 2020-05-07T21:19:57.333 回答
1

我创建了一个新的检查器类并添加打印语句以获取时间。我认为这不是最好的方法,我会做进一步的研究

from pylint.checkers import BaseChecker
from pylint.interfaces import IAstroidChecker


class CustomTimeChecker(BaseChecker):
    """
    find the check type in the following url:
    https://github.com/PyCQA/pylint/blob/63eb8c4663a77d0caf2a842b716e4161f9763a16/pylint/checkers/typecheck.py
    """
    print(begin)
    __implements__ = IAstroidChecker
    name = 'import-time-checker'
    priority = -1

    def __init__(self, linter):
        super().__init__(linter)
        print('test In samuel !')

    def visit_importfrom(self, node):
        end = datetime.datetime.now()
         print('')

    def visit_import(self, node):
)

    def visit_attribute(self, node):
        end = datetime.datetime.now()
        print('        function Name  '+str(node.name)+ ' takes the time for '+ str(end - self.begin))

    def leave_functiondef(self, node):
        end = datetime.datetime.now()
        print('        function Name  '+str(node.name)+ ' takes the time for '+ str(end - self.begin))

    def leave_module(self, node):
        """
        Actual checks are implemented here
        """
        end = datetime.datetime.now()
        print('Leaving the module ' + str(node.name) +' when the time is '+str(end - self.begin))
        print('*'*40)
        # print(node.name)

    def visit_module(self, node):
        end = datetime.datetime.now()
        print('Entering the module ' + str(node.name) + ' when the time is' + str(end - self.begin))


def register(linter):
    linter.register_checker(CustomTimeChecker(linter))
于 2018-05-28T02:21:25.963 回答