鱼C论坛

 找回密码
 立即注册
查看: 698|回复: 1

[已解决]多线程问题求助

[复制链接]
发表于 2018-7-21 01:40:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 罗同学 于 2018-7-21 01:41 编辑

前几天写了一个爬某网站图片的爬虫、但是一个个页面的保存太慢了、今天正巧看书写道了多线程,想用多线程并发改写一下。之前一个个页面爬的时候可以使用os(下文第6、7、20行代码)命令保存到网页名对应的文件夹下,但是多线程并发调用下面的save函数的话,多个线程都是使用同一个工作目录。导致无法保存到对应的文件夹下、请问论坛大神有没有什么方法可以解决呢

  1. def save(url):  # 传入每个子网页链接
  2.     res = url_open(url)
  3.     res.encoding = 'gbk'
  4.     soup = bs(res.text, 'lxml')
  5.     title = soup.find('title').text.split('-')[0]  # 标题
  6.     os.mkdir(title)
  7.     os.chdir(title)
  8.     temp = soup.find_all('tr', class_='tr3')
  9.     img = re.findall(r'data-src="(.*?jpg)" type', str(temp))
  10.     imglist = []

  11.     for each in img:
  12.         imglist.append(each)
  13.     for each in imglist:
  14.         filename = each.split('/')[-1]
  15.         img = url_open(each)
  16.         print('saving...+%s'%filename)
  17.         with open(filename, 'wb')as f:
  18.             f.write(img.content)
  19.     os.chdir('..')
复制代码
最佳答案
2018-7-21 12:00:05
本帖最后由 Python_str 于 2018-7-21 12:04 编辑

不知道你其他代码是什么样的  你可以用队列来多线程之间通讯的思路来实现
就这这么模块queue的Queue   
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-7-21 12:00:05 | 显示全部楼层    本楼为最佳答案   
本帖最后由 Python_str 于 2018-7-21 12:04 编辑

不知道你其他代码是什么样的  你可以用队列来多线程之间通讯的思路来实现
就这这么模块queue的Queue   
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-20 18:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表