Get the App
SLTechnology News&Howtos  ›  Development  › 

How to reduce repeated introduction of python

Shulou Source: shulou.com Published: 2022-06-03 17:41:20 09月13日 Update

This article will explain in detail how to reduce the repeated introduction of python. The editor thinks it is very practical, so I share it with you as a reference. I hope you can get something after reading this article.

1. Each time a module is introduced, it is stored in sys.modules. If it is repeatedly introduced, it will be refreshed directly to the newly introduced module.

2. The reason why we consider reducing repeated import is that we will not rely on upgrading third-party libraries when the program is running.

Taking advantage of the fact that we do not consider repeating the introduction of different modules with the same name, sys.modules can cache the introduction of modules, we can simplify the above logic to introduce modules-> replace the current module method for us to modify the hook method.

Example

Import timefrom functools import wrapsfrom typing import Any, Callable, Tuple, cast import aiomysql def func_wrapper (func: Callable): "same wrapper function as above Here simply skip "" # to determine whether the hook is over _ IS_HOOK: bool = False# stores the original _ query_query: Callable = aiomysql.Cursor._query # hook function def install_hook ()-> None: _ IS_HOOK = False if _ IS_HOOK: return aiomysql.Cursor._query = func_wrapper (aiomysql.Cursor._query) _ IS_HOOK = True # restore to the original The functional method def reset_hook ()-> None: aiomysql.Cursor._query = _ query _ IS_HOOK = False, this is the end of the article on "how to reduce repeated introduction of python" Hope that the above content can be helpful to you, so that you can learn more knowledge, if you think the article is good, please share it for more people to see.

Tags: Module function method article more different good practical reason content example article feature knowledge program third party cache logic upgrade reference Apple Docker Huawei Linux macOS MariaDB Microsoft MySQL NVidia OPPO Reno Linux NVidia Docker Shulou Information MySQL