Это действительно зависит от используемой вами библиотеки. GIL предназначен для предотвращения одновременного изменения объектов Python и его внутренних структур данных. Если вы выполняете загрузку, библиотека, которую вы используете для фактической загрузки, может выпустить GIL, ожидая завершения фактического HTTP-запроса (я бы предположил, что это имеет место с модулями HTTP в стандартной библиотеке, но не проверял).
В качестве примечания: если вы действительно хотите, чтобы все работало параллельно, просто используйте несколько процессов . Это избавит вас от многих проблем, и вы получите лучший код (более надежный, более масштабируемый и, скорее всего, лучше структурированный).