_Python实现一个简单的多线程程序

本文是一个知识碎片,以后再做详细整理。

正文

我尝试使用多线程批量下载图片。代码框架如下,

from multiprocessing.pool import ThreadPool
import requests


'''
下载输入的url保存为图片
'''
def download_urls(url):
r = requests.request('GET', url, headers={})
if r.status_code == 200:
with open("save_path", "wb") as f:
f.write(r.content)
pass

# urls
url_list = ['...']


# 单线程
# for url in url_list:
# download_urls(url)

# 多线程
# 设置线程池线程数
pool = ThreadPool(5)
# 传入下载函数和下载list
pool.imap_unordered(download_urls, url_list)

pool.close()
pool.join()

目前我不明白的是,

  • 不能使用main函数将代码包含进去,否则起不来多线程,为什么?
  • Python多线程的基本知识;
  • Python GIL等。

参考资料

  1. Python下载文件的11种方式
文章作者: Met Guo
文章链接: https://guoyujian.github.io/2022/01/20/Python%E5%AE%9E%E7%8E%B0%E4%B8%80%E4%B8%AA%E7%AE%80%E5%8D%95%E7%9A%84%E5%A4%9A%E7%BA%BF%E7%A8%8B%E7%A8%8B%E5%BA%8F/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Gmet's Blog