Tôi tạo một từ điển từ cơ sở dữ liệu từ xa như một phần của ứng dụng đang chạy. Quá trình này là khá I/O nặng, vì vậy tôi đã quyết định tạo một ví dụ "singleton" của từ điển này và chỉ cần gọi nó là nó cần thiết trong ứng dụng của tôi.Tại sao mô-đun python hoạt động như một singleton?
Mã này trông giống như (trong Dictionaries.py
):
state_code_dict = None
def get_state_code_dict():
global state_code_dict
if state_code_dict == None:
state_code_dict = generate_state_code_dict()
return state_code_dict
Sau đó tôi nhập khẩu và gọi get_state_code_dict()
chức năng khi cần thiết. Tôi đã thêm một câu lệnh in để kiểm tra xem state_code_dict
đã được khởi tạo lại hay sử dụng lại chưa và tôi thấy nó đang được sử dụng lại (đó là chức năng tôi muốn). Tại sao bản sao của state_code_dict
vẫn còn tồn tại khi chạy ứng dụng?
Sửa
tôi nhập khẩu các get_state_code_dict
chức năng trong nhiều file.
vì mã được nhập chỉ được thực hiện lần đầu tiên? – KurzedMetal
chỉnh sửa để làm rõ: Tôi nhập mã ở nhiều vị trí (nhiều tệp bao gồm chức năng 'get_state_code_dict'. –
Nhập mã mà trình thông dịch đã tải sẽ không tải lại mã đó theo mặc định.Có thể cố tình tải lại một mô-đun nhưng nếu bạn phải làm điều này vì bất kỳ lý do nào khác ngoài vì mã thực sự của mô-đun có thể đã thay đổi trong thời gian chạy, bạn có thể sử dụng một thành ngữ lập trình khác để làm những gì bạn muốn làm. –