与直接从 pycharm IDE 相比,从 windows 10 上使用 pyinstaller 构建的 exe 连接到远程 mariadb 数据库时性能较慢
Slow performance while connecting to remote mariadb database from exe built using pyinstaller on windows 10 as compared to directly from pycharm IDE
与直接从 pycharm IDE.[=15= 相比,在 windows 10 上从使用 pyinstaller 构建的 .exe 连接到远程 mariadb 数据库时,我面临性能低下的问题]
所以,下面是示例代码:
import MySQLdb
try:
conn = MySQLdb.connect(host=database_host, port=database_port, user=database_user,
passwd=database_password, db=database_name)
except MySQLdb.OperationalError as e:
# error message
print('Error: ', e)
如果我运行这段代码从pycharm,连接时间是~100毫秒远程 mariadb 数据库。
如果我 运行 使用 windows 可执行文件(使用 pyinstaller 构建的 .exe)执行相同的代码,执行时间约为 2 秒 到同一个远程 mariadb 数据库。
pyinstaller 命令:
pyinstaller -y --add-data "C:\path\to\data" --icon="C:\path\to\icon.ico" --hidden-import babel.numbers package.path.MainModule.py
我在本地 windows 机器上安装了 maridb,没有发现任何性能差异。因此,仅在远程连接上观察到性能差异。
这是性能上的显着差异。现在,我不知道是什么原因造成的。任何方向将不胜感激。
好吧,在花了更多时间并试图找到两个执行环境之间的区别之后,我才意识到我犯的一个愚蠢的错误导致了这个问题。
我在执行 using .exe 时使用主机名,而在执行 pycharm.
时我使用直接 IP 地址
所以,解析主机名需要时间。
我是这样找到它的:
从 python venv 形式 windows 命令行执行相同的程序。测试结果同pycharm.
现在,我打印了 database_host 和 database_port 的值。在 .exe 和 pycharm(或命令行)之间发现的唯一区别是 database_host name 的值是 .exe 的主机名和 pycharm 中的 ip 地址。 =10=]
所以,我更改了配置,同时 运行.exe 使用 IP 地址,现在性能相同。
更新:
我现在通过在 C:\widows32\drivers\etc\hosts 文件中添加 IP 地址和主机名的映射来应用解决方法。很有魅力
与直接从 pycharm IDE.[=15= 相比,在 windows 10 上从使用 pyinstaller 构建的 .exe 连接到远程 mariadb 数据库时,我面临性能低下的问题]
所以,下面是示例代码:
import MySQLdb
try:
conn = MySQLdb.connect(host=database_host, port=database_port, user=database_user,
passwd=database_password, db=database_name)
except MySQLdb.OperationalError as e:
# error message
print('Error: ', e)
如果我运行这段代码从pycharm,连接时间是~100毫秒远程 mariadb 数据库。
如果我 运行 使用 windows 可执行文件(使用 pyinstaller 构建的 .exe)执行相同的代码,执行时间约为 2 秒 到同一个远程 mariadb 数据库。
pyinstaller 命令:
pyinstaller -y --add-data "C:\path\to\data" --icon="C:\path\to\icon.ico" --hidden-import babel.numbers package.path.MainModule.py
我在本地 windows 机器上安装了 maridb,没有发现任何性能差异。因此,仅在远程连接上观察到性能差异。
这是性能上的显着差异。现在,我不知道是什么原因造成的。任何方向将不胜感激。
好吧,在花了更多时间并试图找到两个执行环境之间的区别之后,我才意识到我犯的一个愚蠢的错误导致了这个问题。
我在执行 using .exe 时使用主机名,而在执行 pycharm.
时我使用直接 IP 地址所以,解析主机名需要时间。
我是这样找到它的: 从 python venv 形式 windows 命令行执行相同的程序。测试结果同pycharm.
现在,我打印了 database_host 和 database_port 的值。在 .exe 和 pycharm(或命令行)之间发现的唯一区别是 database_host name 的值是 .exe 的主机名和 pycharm 中的 ip 地址。 =10=]
所以,我更改了配置,同时 运行.exe 使用 IP 地址,现在性能相同。
更新: 我现在通过在 C:\widows32\drivers\etc\hosts 文件中添加 IP 地址和主机名的映射来应用解决方法。很有魅力