Oph*_*tan 8 python shared-memory memory-mapped-files scikit-learn
我有几个占用大量内存的大型对象(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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
287 次 |
| 最近记录: |