【转载】numpy 为什么在python中显示“NumExpr defaulting to 8 threads.“警告消息?
转自:https://www.saoniuhuo.com/question/detail-2280987.html
我尝试使用python中的lux库来获得可视化建议。它显示了类似**NumExpr默认为8个线程。**的警告。
import pandas as pd
import numpy as np
import opendatasets as od
pip install lux-api
import lux
import matplotlib
然后道:
link = "https://www.kaggle.com/noordeen/insurance-premium-prediction"
od.download(link)
df = pd.read_csv("./insurance-premium-prediction/insurance.csv")
但是,一切都工作正常。是否有任何问题或我应该忽略它?警告显示如下:【略】
kh212irz1#
在大多数情况下,这并不是什么值得担心的事情。警告来自这个函数,这里是最重要的部分:
...
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)
因此,如果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
欢迎大家评论交流,发现博文中存在的问题一定要留言哦