私信  •  关注

delica

delica 最近创建的主题
delica 最近回复了
4 年前
回复了 delica 创建的主题 » 如何销毁Python对象并释放内存

您的问题是,您正在使用应该使用多处理的线程(CPU绑定与IO绑定)。

我会像这样重构你的代码:

from multiprocessing import Pool

if __name__ == '__main__':
    cpus = multiprocessing.cpu_count()        
    with Pool(cpus-1) as p:
        p.map(get_image_features, file_list_1)

get_image_features 把这两行加在它的末尾。我不知道你到底是如何处理这些图像的,但我的想法是在每个进程中处理每个图像,然后立即将其保存到磁盘:

df = pd.DataFrame({'filename':list_a,'image_features':list_b})
df.to_pickle("PATH_TO_FILE"+str(count)+".pickle")

因此,数据帧将被pickle并保存在每个进程中,而不是在它退出之后。进程一旦退出就会从内存中清除,因此这应该可以保持低内存占用率。

4 年前
回复了 delica 创建的主题 » 用Python固定复制警告(复制)

有些人可能只想抑制警告:

class SupressSettingWithCopyWarning:
    def __enter__(self):
        pd.options.mode.chained_assignment = None

    def __exit__(self, *args):
        pd.options.mode.chained_assignment = 'warn'

with SupressSettingWithCopyWarning():
    #code that produces warning