Tôi đang cố gắng để dưa instance của lớp cellular automata của tôi, nhưng tôi nhận được lỗi này:python Pickler - sâu đệ quy vượt
RuntimeError: maximum recursion depth exceeded while calling a Python object
cellular automata tôi bao gồm từ danh sách các tế bào (và bó của những thứ khác) nơi mỗi ô có con trỏ tới hàng xóm của nó. Trong CA cụ thể này, có 256 ô. Bây giờ, tôi biết rằng người hái phải có thể nhận ra những vật thể đã được ngâm.
From docs:
*The pickle module keeps track of the objects it has already serialized, so that later references to the same object won’t be serialized again.
Vì vậy, tôi thực sự không biết, tại sao tôi vượt quá độ sâu đệ quy tối đa.
Tôi nghĩ rằng có thể người hái làm mồi ngâm đầu tiên, để nó làm theo con trỏ đầu tiên, vượt quá ngăn xếp đệ quy và sau đó tăng ngoại lệ. Tôi biết tôi có thể mở rộng chiều sâu đệ quy tối đa với sys.setrecursionlimit()
, nhưng tôi không xem xét giải pháp tốt và không thể mở rộng đó.
Câu hỏi đầu tiên: Có dưa chua có độ sâu đầu tiên không?
Câu hỏi thứ hai: Bất kỳ ý tưởng nào về cách ngăn chặn ngoại lệ này?
bất kỳ mã nào bạn có thể đăng? –
Có, 'pickle' đi sâu đầu tiên. Thật không may tôi không nghĩ rằng có một xung quanh này. Hãy thử 'cPickle' nhưng nó có thể sẽ cho cùng một lỗi. –
@AswinMurugesh thực sự tôi có quá nhiều mã để đăng. Tuy nhiên, dưới đây là một số tệp quan trọng nếu bạn quan tâm: [vùng lân cận] (https://github.com/mirobeka/cellular-automata/blob/master/cellular_automata/lattices/neighbourhoods.py) [ô] (https://github.com/mirobeka/cellular-automata/blob/master/cellular_automata/cells/regular.py#L21) [tẩy] (https://github.com/mirobeka/cellular-automata/blob/master/cellular_automata/ lattices/equiangular.py # L210) Exp: cPickle là như nhau, tôi đã thử nó trước đây. Tôi sợ câu trả lời này –