Aka*_*mar 9 python warnings numpy numexpr
我正在尝试使用 python 中的 lux 库来获取可视化建议。它显示警告,例如NumExpr 默认为 8 个线程。。
import pandas as pd
import numpy as np
import opendatasets as od
pip install lux-api
import lux
import matplotlib
Run Code Online (Sandbox Code Playgroud)
进而:
link = "https://www.kaggle.com/noordeen/insurance-premium-prediction"
od.download(link)
df = pd.read_csv("./insurance-premium-prediction/insurance.csv")
Run Code Online (Sandbox Code Playgroud)
在大多数情况下,这并不是真正值得担心的事情。警告来自这个函数,这里是最重要的部分:
...
env_configured = False
n_cores = detect_number_of_cores()
if 'NUMEXPR_MAX_THREADS' in os.environ:
# The user has configured NumExpr in the expected way, so suppress logs.
env_configured = True
n_cores = MAX_THREADS
...
if 'NUMEXPR_NUM_THREADS' in os.environ:
requested_threads = int(os.environ['NUMEXPR_NUM_THREADS'])
elif 'OMP_NUM_THREADS' in os.environ:
requested_threads = int(os.environ['OMP_NUM_THREADS'])
else:
requested_threads = n_cores
if not env_configured:
log.info('NumExpr defaulting to %d threads.'%n_cores)
Run Code Online (Sandbox Code Playgroud)
因此,如果既没有NUMEXPR_MAX_THREADS设置NUMEXPR_NUM_THREADS也没有OMP_NUM_THREADS设置,NumExpr 使用与核心数量一样多的线程(即使文档说“最多 8 个”,但这不是我在代码中看到的)。
您可能想要使用另一数量的线程,例如,当计算真正巨大的矩阵时,人们可以从中受益,或者使用更少的线程,因为没有任何改进。在 shell 中或在导入 numexpr 之前设置环境变量,例如
import os
os.environ['NUMEXPR_MAX_THREADS'] = '4'
os.environ['NUMEXPR_NUM_THREADS'] = '2'
import numexpr as ne
Run Code Online (Sandbox Code Playgroud)