通过女服务员提供烧瓶应用程序时使用 np.cov 出现分段错误

Segmentation fault using np.cov while serving a flask app via waitress

我想在更复杂的 Flask 应用程序中执行简单的协方差计算。下面我创建了一个最小的随机示例,没有计算导致问题的烧瓶(实际上正在工作)(在 flask/waitress 设置中)。

import pandas as pd
import numpy as np

#import faulthandler
#faulthandler.enable()

n = 547
t = 50
data = np.random.random(size=(n*t,2))*10**-6

times = pd.date_range(start="20210501",end="20210502",periods=t)
index = pd.MultiIndex.from_product([times,range(n)],names=["time","id"])
df = pd.DataFrame(data,index=index, columns=["lon","lat"])

for time, group in df.groupby("time"):    
    print(group)
    if group['lon'].max() == group['lon'].min():
        cov = np.zeros((2,2))
    else:
        if group['lat'].max() == group['lat'].min():
            cov = np.zeros((2,2))
        else:
            cov = np.cov(group['lat'].astype(float),
                         group['lon'].astype(float))            
            
print(cov)

当从女服务员提供的烧瓶应用程序端点执行计算(作为函数调用)时,发生分段错误。它不是直接由 np.cov 引起的,因为调用 returns 很好。数据非常小(大约(500,2))。但是分段错误确实发生在循环内。有时 150. 迭代,有时更早,有时从不。我在 np.cov 之后检查了内存使用情况,它总是在 100mb 左右。可用空间约为 16GB。

也许这对某些人有意义?或者在烧瓶应用程序中使用 pandas/numpy 可能是不好的做法?提前致谢!!

烧瓶 1.1.2 服务员 1.4.3 麻木 1.19.1 pandas1.1.3

更新所有软件包解决了问题