From a37a5160fa089129aed74f6e48f4b2e0114f2026 Mon Sep 17 00:00:00 2001 From: Michael Razoumovitch Date: Fri, 9 Nov 2018 18:01:11 +0100 Subject: [PATCH] memory leak fix removed _function_names and _event_names ContractEvents and ContractFunctions have not used lists _event_names / _function_names. Each time a contract is created through the factory method, the _event_names list and the _function_names list are extended. Creating many contract's results in high memory usage. (cherry picked from commit 94b8b40d6df51730243a713c14cf174bcb14bb32) --- web3/contract.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/web3/contract.py b/web3/contract.py index 493aa5d92b..8de56b5dbf 100644 --- a/web3/contract.py +++ b/web3/contract.py @@ -101,14 +101,11 @@ class ContractFunctions: """Class containing contract function objects """ - _function_names = [] - def __init__(self, abi, web3, address=None): if abi: self.abi = abi self._functions = filter_by_type('function', self.abi) for func in self._functions: - self._function_names.append(func['name']) setattr( self, func['name'], @@ -148,14 +145,11 @@ class ContractEvents: """Class containing contract event objects """ - _event_names = [] - def __init__(self, abi, web3, address=None): if abi: self.abi = abi self._events = filter_by_type('event', self.abi) for event in self._events: - self._event_names.append(event['name']) setattr( self, event['name'],