From my experience, it does the latter.
I'm doing this:
- name: Install Python packages
pip:
name: "{{
item.name }}"
version: "{{ item.version }}"
executable: pip2
become: yes
with_items:
- { name: 'alembic', version: '1.1.0' }
- { name: 'aniso8601', version: '7.0.0' }
- { name: 'anyjson', version: '0.3.3' }
- { name: 'articleDateExtractor', version: '0.20' }
And it pip installs every one of them separately.