gpt4 book ai didi

python - 是否可以将 python 对象(特别是 sklearn 模型)存储在内存映射文件中?

转载 作者:太空狗 更新时间:2023-10-29 21:09:40 25 4
gpt4 key购买 nike

我有几个占用大量内存的大对象(sklearn 模型),我想在多个进程之间共享它们。有办法做到这一点吗?

  • 它必须是“实时”对象,而不是序列化版本
  • 我知道有一个内存映射版本的 numpy 数组,它负责模型内存的很大一部分——但使用它们需要对 sklearn 源代码进行重大更改,这将很难维护

最佳答案

在进程从同一个 python 脚本启动的条件下,这里是一个创建第二个进程并在两个进程之间共享变量的示例。对此进行详细说明以创建一些流程是很简单的。注意用于创建和访问共享变量和锁的结构。我在算术过程中插入了一个循环来生成一些 cpu 使用情况,以便您可以监视和查看它在多核或多处理器平台上的运行情况。还要注意使用共享变量来控制第二个进程,在本例中是告诉它何时退出。最后,共享对象可以是值或数组,参见 https://docs.python.org/2/library/multiprocessing.html

#!/usr/bin/python

from time import sleep
from multiprocessing import Process, Value, Lock

def myfunc(counter, lock, run):

while run.value:
sleep(1)
n=0
for i in range(10000):
n = n+i*i
print( n )
with lock:
counter.value += 1
print( "thread %d"%counter.value )

with lock:
counter.value = -1
print( "thread exit %d"%counter.value )

# =======================

counter = Value('i', 0)
run = Value('b', True)
lock = Lock()

p = Process(target=myfunc, args=(counter, lock, run))
p.start()

while counter.value < 5:
print( "main %d"%counter.value )
n=0
for i in range(10000):
n = n+i*i
print( n )
sleep(1)

with lock:
counter.value = 0

while counter.value < 5:
print( "main %d"%counter.value )
sleep(1)

run.value = False

p.join()

print( "main exit %d"%counter.value)

关于python - 是否可以将 python 对象(特别是 sklearn 模型)存储在内存映射文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35570433/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com