diff options
Diffstat (limited to 'librabbitmq/__init__.py')
-rw-r--r-- | librabbitmq/__init__.py | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/librabbitmq/__init__.py b/librabbitmq/__init__.py index ee7a06c..d2210e7 100644 --- a/librabbitmq/__init__.py +++ b/librabbitmq/__init__.py @@ -255,8 +255,11 @@ class Connection(_librabbitmq.Connection): pass def _get_free_channel_id(self): - for channel_id in range(1, self.channel_max): - if channel_id not in self._used_channel_ids: + # Cast to a set for fast lookups, and keep stored as an array for lower memory usage. + used_channel_ids = set(self._used_channel_ids) + + for channel_id in range(1, self.channel_max + 1): + if channel_id not in used_channel_ids: self._used_channel_ids.append(channel_id) return channel_id |