### Summary

When ansible(-playbook) iterates over a very large list (3700 items in my case), it hangs after processing the last item, cpu usage goes to 100% and memory usage rises until the process gets killed by linux OOM-killer.

This happens when I enable the `extended` option of `loop_control`, but does not happen on small lists (10 items).

### Issue Type

Bug Report

### Component Name

loop_control

### Ansible Version

```console
$ ansible --version
ansible 2.9.21
  config file = /etc/ansible/ansible.cfg
  configured module search path = [u'/home/xxxx/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.5 (default, May  3 2017, 07:55:04) [GCC 4.8.5 20150623 (Red Hat 4.8.5-14)]
```


### Configuration

```console
$ ansible-config dump --only-changed
ANSIBLE_PIPELINING(/home/xxxx/playbooks/ansible.cfg) = True
DEFAULT_BECOME_EXE(/home/xxxx/playbooks/ansible.cfg) = sudo su -
DEFAULT_BECOME_METHOD(/home/xxxx/playbooks/ansible.cfg) = su
DEFAULT_HOST_LIST(/home/xxxx/playbooks/ansible.cfg) = [u'/home/xxxx/playbooks/hosts']
DEFAULT_REMOTE_USER(/home/xxxx/playbooks/ansible.cfg) = ansible
DISPLAY_SKIPPED_HOSTS(/home/xxxx/playbooks/ansible.cfg) = False
```


### OS / Environment

- **OS**: `Red Hat Enterprise Linux Server release 7.4 (Maipo)`
- **CPU**: `Intel(R) Xeon(R) CPU E5-2670 v3 @ 2.30GHz`
- **Mem**: `16GB`

### Steps to Reproduce

This is the problematic playbook task:
```yaml
- name: Install network devices configuration files
  template:
    src: telegraf-device.toml.j2
    dest: "{{telegraf_include_dir}}/{{item.hostname}}.conf"
    owner: telegraf
    group: telegraf
  loop: "{{large_list_of_devices}}"
  loop_control:
    index_var: index
    extended: yes
    label: "{{item.hostname}} - {{item.address}}"
  when: true # redacted the condition, not sure if it is relevant
  register: managed_device_configs
  notify: reload telegraf
```


### Expected Results

I expect ansible to be able to iterate over this large list with `extended` enabled and continue to the next task after the last item.

### Actual Results

```console
...
TASK [xxxxx] *********************************************************************************************
ok: [xxxx] => (item=XXXXX - xxx.xxx.xxx.xxx)
ok: [xxxx] => (item=XXXXX - xxx.xxx.xxx.xxx)
....
changed: [xxxx] => (item=XXXXX - xxx.xxx.xxx.xxx)
ok: [xxxx] => (item=XXXXX - xxx.xxx.xxx.xxx)
ok: [xxxx] => (item=XXXXX - xxx.xxx.xxx.xxx)
NOTIFIED HANDLER xxxx for xxxx
Killed
```


### Code of Conduct

- [X] I agree to follow the Ansible Code of Conduct
self._task._uuid,
                res,
                task_fields=task_fields,
            )
            if tr.is_failed() or tr.is_unreachable():
                self._final_q.send_callback('v2_runner_item_on_failed', tr)
            elif tr.is_skipped():
                self._final_q.send_callback('v2_runner_item_on_skipped', tr)
            else:
                if getattr(self._task, 'diff', False):
                    self._final_q.send_callback('v2_on_file_diff', tr)
                if self._task.action not in C._ACTION_INVENTORY_TASKS:
                    self._final_q.send_callback('v2_runner_item_on_ok', tr)
            results.append(res)
            del task_vars[loop_var]
            
            if self._connection:
                clear_plugins = {
                    'connection': self._connection._load_name,
                    'shell': self._connection._shell._load_name
                }
                if self._connection.become:
                    clear_plugins['become'] = self._connection.become._load_name
                for plugin_type, plugin_name in clear_plugins.items():
                    for var in C.config.get_plugin_vars(plugin_type, plugin_name):
                        if var in task_vars and var not in self._job_vars:
                            del task_vars[var]
        self._task.no_log = no_log
        return results
    def _execute(self, variables=None):