【转载】numpy 为什么在python中显示“NumExpr defaulting to 8 threads.“警告消息?

转自:https://www.saoniuhuo.com/question/detail-2280987.html

 

我尝试使用python中的lux库来获得可视化建议。它显示了类似**NumExpr默认为8个线程。**的警告。

  1. import pandas as pd
  2. import numpy as np
  3. import opendatasets as od
  4. pip install lux-api
  5. import lux
  6. import matplotlib

然后道:

  1. link = "https://www.kaggle.com/noordeen/insurance-premium-prediction"
  2. od.download(link)
  3. df = pd.read_csv("./insurance-premium-prediction/insurance.csv")

但是,一切都工作正常。是否有任何问题或我应该忽略它?警告显示如下:【略】

 

 

kh212irz1#

在大多数情况下,这并不是什么值得担心的事情。警告来自这个函数,这里是最重要的部分:

  1. ...
  2. env_configured = False
  3. n_cores = detect_number_of_cores()
  4. if 'NUMEXPR_MAX_THREADS' in os.environ:
  5. # The user has configured NumExpr in the expected way, so suppress logs.
  6. env_configured = True
  7. n_cores = MAX_THREADS
  8. ...
  9. if 'NUMEXPR_NUM_THREADS' in os.environ:
  10. requested_threads = int(os.environ['NUMEXPR_NUM_THREADS'])
  11. elif 'OMP_NUM_THREADS' in os.environ:
  12. requested_threads = int(os.environ['OMP_NUM_THREADS'])
  13. else:
  14. requested_threads = n_cores
  15. if not env_configured:
  16. log.info('NumExpr defaulting to %d threads.'%n_cores)

因此,如果NUMEXPR_MAX_THREADSNUMEXPR_NUM_THREADSOMP_NUM_THREADS都没有设置,NumExpr使用的线程数与内核数相同(即使文档中说“最多8个”,但这不是我在代码中看到的)。
您可能希望使用其他数量的线程,例如,当计算非常大的矩阵时,您可以从中受益,或者使用更少的线程,因为没有任何改进。在shell中或在导入numexpr之前设置环境变量,例如:

  1. import os
  2. os.environ['NUMEXPR_MAX_THREADS'] = '4'
  3. os.environ['NUMEXPR_NUM_THREADS'] = '2'
  4. import numexpr as ne
 
 
 
posted @ 2023-03-06 17:00  workingdiary  阅读(996)  评论(0编辑  收藏  举报