python-3.x - 我应该如何处理 AWS lambda 实现中的 joblib 多处理?

标签 python-3.x lambda scikit-learn warnings joblib

我在 AWS 中有一个相对简单的线性回归 lambda。调用该函数的每个实例,日志显示以下内容:

/opt/python/sklearn/externals/joblib/_multiprocessing_helpers.py:38: UserWarning: [Errno 38] Function not implemented. joblib will operate in serial mode
warnings.warn('%s. joblib will operate in serial mode' % (e,))

我怀疑这是由于 sklearn 在 lambda(即“无服务器”)上运行并试图根据 this question 确定它的多处理能力和 this GH issue .

我也从 GH 了解到,这不是一个“可修复”的问题,当在此硬件上部署这些依赖项时,它总是会发生。我得到了我的预期结果(即使我目前正在最大化默认的最小 lambda 内存 128mb)。

我的目标是控制警告,并知道是否有办法:
  • 停止 sklearn 寻找多处理,从而防止发出警告
  • 捕获此特定警告并防止其从我的函数传递到 cloudwatch 日志
  • 如果两者都可能,那么从 aws 架构/pythonic 观点来看哪个更可取?
  • 最佳答案

    要捕获警告并防止将其传递到 cloudwatch 日志中,您可以按如下方式过滤警告。

    import json
    import warnings
    warnings.filterwarnings('error') 
    try:
        import sklearn
    except Warning:
        pass 
    
    def lambda_handler(event, context):
        # TODO implement
        return {
            'statusCode': 200,
            'body': json.dumps('Hello from Lambda!')
        }
    

    article here ,特别是在最后,重新创建和过滤警告。

    关于python-3.x - 我应该如何处理 AWS lambda 实现中的 joblib 多处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55577358/

    相关文章:

    python - 未加权双向图上的广度优先搜索

    Java 8 使用 lambda 访问私有(private)成员?

    c# - 将 foreach 更改为 lambda

    python - 使用随机搜索和递归特征消除将特征缩放添加到嵌套交叉验证

    Python 线性回归值错误 : Found input variables with inconsistent numbers of samples: [1, 3]

    python - scikit-learn,将特征添加到向量化的文档集

    python - 如何使用不确定条或等价物创建 3D 曲面图?

    python - 如何查找单词 - 第一个字母大写,其他字母小写

    python 3 : Checking next value of an iterator without iterating

    java - 实例方法引用和 Lambda 参数