如何修复 Mac M1 上的“1 个泄漏的信号量对象需要在关机时清理”错误

e.i*_*luf 11 python

我使用的是苹果Mac M1:

OS: MacOS Monterey

Python 3.9.13
Run Code Online (Sandbox Code Playgroud)

我想使用实现语义搜索SentenceTransformer

这是我的代码:

from sentence_transformers import SentenceTransformer
import faiss
from pprint import pprint
import time

import pandas as pd
import numpy as np

import matplotlib.pyplot as plt
import seaborn as sns

 

def load_index():
    index = faiss.read_index("movie_plot.index")
    return index


def fetch_movie_info(dataframe_idx):
    info = df.iloc[dataframe_idx]
    meta_dict = dict()
    meta_dict['Title'] = info['Title']
    meta_dict['Plot'] = info['Plot'][:500]
    return meta_dict
    
def search(query, top_k, index, model):
    print("starting search!")
    t=time.time()
    query_vector = model.encode([query])
    top_k = index.search(query_vector, top_k)
    print('>>>> Results in Total Time: {}'.format(time.time()-t))
    top_k_ids = top_k[1].tolist()[0]
    top_k_ids = list(np.unique(top_k_ids))
    results =  [fetch_movie_info(idx) for idx in top_k_ids]
    return results


def main():
    # GET MODEL
    model = SentenceTransformer('msmarco-distilbert-base-dot-prod-v3')
    print("model set!")
    #GET INDEX
    index = load_index()
    print("index loaded!")
    query="Artificial Intelligence based action movie"
    results=search(query, top_k=5, index=index, model=model)
    print("\n")
    for result in results:
        print('\t',result)

main()


Run Code Online (Sandbox Code Playgroud)

当我运行上面的代码时,它陷入了这个错误

/opt/homebrew/Caskroom/miniforge/base/envs/searchapp/lib/python3.9/multiprocessing/resource_tracker.py:216: UserWarning: resource_tracker: 关闭时似乎有 1 个泄漏的信号量对象需要清理 warnings.warn( 'resource_tracker:似乎有 %d '

是什么原因造成的?我该如何解决?

小智 1

我遇到了同样的问题,升级到 Python 3.9 解决了我的问题。

看起来这是一个官方错误:https://bugs.python.org/issue45209