some_function.py
이 필요로하는 개체로 deserialize하는 큰 이진 파일 large_file.pkl
을 고려하십시오. 순전히, some_function.py
이 실행될 때마다 large_file.pkl
을 역 직렬화 할 수는 있지만 (내 경우, 플라스크 서버에 요청할 때마다) 느려질 수 있으며 동시에 여러 스레드에서 some_function.py
을 실행할 수 없습니다. large_file.pkl
을 deserialize 할 파이썬 방법이 있습니까? 메모리에 해당 객체 인스턴스를 저장하고 some_function.py
이 실행되는 각 스레드에서 필요에 따라 사용 하시겠습니까?파이썬 서버에서 여러 번 쓰고 여러 스레드를 사용하기 위해 데이터를 한 번 직렬화하는 방법은 무엇입니까?
나는 기본적으로이 수행하는 파일 unpickler.py
만들려고 한 : 나는 global
일을 생각하는 방식에 따라, 그리고
from pickle import load
def create_global_large_object():
global large_object
with open('large_file.pkl', 'rb') as f:
large_object = pickle.load(f)
을, 나는 some_function.py
에서 다음을 수행하십시오 그러나
def run():
...
large_object.cool_method()
...
, 다음 테스트를 실행할 때 :
from unpickler import create_global_large_object
from some_function import run
def test_idea():
create_global_large_object()
run()
나는 NameError: name 'large_object' is not defined
이됩니다.
unpickler.large_object.cool_method()
'large_object'이하지 않는 unpickler.py''에 정의되지 않은 : –