我正在设置一个 Azure Function 应用程序,该应用程序具有多个同时或大约同时触发的计时器触发器。我对这里的措辞感到困惑: https: //learn.microsoft.com/fi-fi/azure/azure-functions/functions-scale
消耗计划中的 Functions 主机的每个实例仅限于 1.5 GB 内存和 1 个 CPU。主机的实例是整个函数应用程序,这意味着函数应用程序中的所有函数共享实例内的资源并同时扩展。
这是否意味着使用计时器触发器执行的每个脚本都会分配 1.5 GB 内存,或者是否意味着所有同时运行的脚本共享 1.5 GB 内存?
我正在使用 Pandas 向量化 str.split() 方法来提取从“~”上的拆分返回的第一个元素。我还尝试将 df.apply() 与 lambda 和 str.split() 一起使用来产生等效的结果。使用 %timeit 时,我发现 df.apply() 的执行速度比矢量化版本快。
我读到的关于矢量化的所有内容似乎都表明第一个版本应该有更好的性能。有人可以解释为什么我得到这些结果吗?例子:
id facility
0 3466 abc~24353
1 4853 facility1~3.4.5.6
2 4582 53434_Facility~34432~cde
3 9972 facility2~FACILITY2~343
4 2356 Test~23 ~FAC1
Run Code Online (Sandbox Code Playgroud)
上面的数据框有大约 500,000 行,我也测试了大约 100 万行,结果相似。以下是一些示例输入和输出:
矢量化
id facility
0 3466 abc~24353
1 4853 facility1~3.4.5.6
2 4582 53434_Facility~34432~cde
3 9972 facility2~FACILITY2~343
4 2356 Test~23 ~FAC1
Run Code Online (Sandbox Code Playgroud)
Lambda 应用
In [1]: %timeit df['facility'] = df['facility'].str.split('~').str[0]
1.1 s ± 54.4 ms per loop (mean ± std. dev. of 7 runs, …Run Code Online (Sandbox Code Playgroud) 我正在使用 Azure Functions 处理 ETL 项目,我从 blob 存储中提取数据,在 Python 和 Pandas 中转换数据,并使用 Pandas to_sql() 加载数据。我正在尝试通过使用 asyncio 和语言工作者来提高这个过程的效率。
我有点困惑,因为我的印象是 asyncio 使用一个线程工作,但是 Azure Functions 文档说,如果更改配置,您可以使用多种语言工作器,甚至不使用 async 关键字的方法也可以运行在线程池中。
这是否意味着如果我不使用 async 关键字,我的方法将使用语言工作者并发运行?我是否必须使用 asyncio 来使用语言工作者?
此外,文档说 Azure Functions 最多可以扩展到 200 个实例。如果最多只允许 10 名语言工作者,我如何扩展到这么多实例?
编辑:谢谢阿纳托利。只是为了澄清,如果我有一个带有以下代码的定时器触发器:
import azure.functions as func
from . import client_one_etl
from . import client_two_etl
def main(mytimer: func.TimerRequest) -> None:
client_one_etl.main()
client_two_etl.main()
Run Code Online (Sandbox Code Playgroud)
如果我增加了语言工作者的数量,这是否意味着即使不使用client_one_etl.main(),client_two_etl.main()它们也会自动在单独的线程中运行asyncio?而如果client_two_etl.main()需要client_one_etl.main()在执行前完成,我需要使用async await防止它们并发运行吗?
对于单独的实例,如果client_one_etl.main()并且client_two_etl.main()不相互依赖,是否意味着我可以在一个 Azure Function 应用程序中将它们作为在它们自己的 …
我一直在使用sklearn.ensemble.IsolationForest隔离林的 scikit learn 实现来检测数据集中的异常情况,数据范围从数百行到数百万行数据。它似乎运行良好,我已将其覆盖max_samples为一个非常大的整数来处理一些较大的数据集(本质上不使用子采样)。我注意到原始论文指出,较大的样本量会产生淹没和掩盖的风险。
如果隔离森林看起来工作正常,是否可以在大样本量上使用它?我尝试使用较小的训练max_samples,但测试产生了太多异常情况。我的数据确实开始增长,我想知道对于如此大的样本量,不同的异常检测算法是否会更好。
python ×3
azure ×2
algorithm ×1
asynchronous ×1
pandas ×1
sampling ×1
scikit-learn ×1
serverless ×1
split ×1
string ×1