鱼C论坛

 找回密码
 立即注册
楼主: °蓝鲤歌蓝

[作品展示] 多线程与多进程爬取豆瓣电影TOP250

[复制链接]
发表于 2018-2-9 11:11:26 | 显示全部楼层
°蓝鲤歌蓝 发表于 2018-2-9 10:48
不客气,你刚刚发的多线程join()用法的帖子,穷刚刚看了,也测试过,
后面2种正确方法比错误示范要快。

终于清理完零散知识了,开干,你稍等。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-9 12:07:56 | 显示全部楼层
给你两组数据:
1.单线程 耗时 4.825276136398315
2.多线程 耗时 2.750157356262207
如果获取页数多一些,节省时间应该更可观。
自荐一下新出炉的帖子
http://bbs.fishc.com/forum.php?m ... p;extra=#pid3207147
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-9 16:37:48 | 显示全部楼层
多进程碰到问题了,凡是子线程的print语句都运行不了,我用的是win7。
请问你用的是什么操作系统,能打印出子进程的语句吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-9 17:45:12 | 显示全部楼层
payton24 发表于 2018-2-9 16:37
多进程碰到问题了,凡是子线程的print语句都运行不了,我用的是win7。
请问你用的是什么操作系统,能打印 ...

刚刚试过了,我的可以打印。win7 64位
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-9 17:48:55 | 显示全部楼层
°蓝鲤歌蓝 发表于 2018-2-9 17:45
刚刚试过了,我的可以打印。win7 64位


那设置跟我一样啊,我也是win7 64位,txt文档的输出倒是正常,但是打印语句一条也没有。
难道跟运行方式有关系?我用的是自带IDLE,请问你用的是什么运行的呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-9 17:51:56 | 显示全部楼层
payton24 发表于 2018-2-9 17:48
那设置跟我一样啊,我也是win7 64位,txt文档的输出倒是正常,但是打印语句一条也没有。
难 ...

Pycharm,以前我用自带ide时也可以打印的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-9 17:55:41 | 显示全部楼层
°蓝鲤歌蓝 发表于 2018-2-9 17:51
Pycharm,以前我用自带ide时也可以打印的。

我这边不知道为什么测试时间老是 0.0 。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-9 17:58:37 | 显示全部楼层
好的,那我用pycharm也试试,tks
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-9 18:13:55 | 显示全部楼层
°蓝鲤歌蓝 发表于 2018-2-9 17:55
我这边不知道为什么测试时间老是 0.0 。

我这边用了pycharm终于恢复正常了。你怎么测试时间的呢?发代码来看看。

我刚才用pycharm,测试时间也是正常的哦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-9 18:27:10 | 显示全部楼层
payton24 发表于 2018-2-9 18:13
我这边用了pycharm终于恢复正常了。你怎么测试时间的呢?发代码来看看。

我刚才用pycharm,测试时间也 ...

不用发了,就是复制我多线程的。然后在最前面写个start,最后面写了个stop,然后相减。
我试了好几次,大多数是0.0,只有一次是0.015xxxxxxxxx。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-9 23:23:27 | 显示全部楼层
°蓝鲤歌蓝 发表于 2018-2-9 18:27
不用发了,就是复制我多线程的。然后在最前面写个start,最后面写了个stop,然后相减。
我试了好几次, ...

我在IDLE上测试多进程的时间是正常的,pycharm好像需要等一段时间才能结束。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-13 06:27:46 | 显示全部楼层
°蓝鲤歌蓝 发表于 2018-2-9 18:27
不用发了,就是复制我多线程的。然后在最前面写个start,最后面写了个stop,然后相减。
我试了好几次, ...

我今天又运行了一下,发现t1.start(),t2.start(), t3.start()后面都没有用t.join()。这样子测试时间,代码会直接运行完主程序,然后进程或线程的程序还会继续运行至结束为止。不信你可以在各个线程中加个print的测试代码,测试时间出来之后,各个子程序还在进行,所以这样运行效率不高,有可能比单线程耗时还要长。

不过我现在在多进程的顺序输出问题上卡住了,time.sleep()不好用。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-13 10:28:11 | 显示全部楼层
payton24 发表于 2018-2-13 06:27
我今天又运行了一下,发现t1.start(),t2.start(), t3.start()后面都没有用t.join()。这样子测试时间,代 ...


是的,我之前测试的时间都是主线程运行的时间,所以才那么快。可是我在后面加上join()方法之后,测试时间一直打印不出来,程序也没有说运行完成,就好像子线程一直没有完成一样,主线程一直被堵塞。可是我的txt文档里都已经下载完毕了。
  1. if __name__ == '__main__':
  2.     start = time.time()
  3.     url = 'https://movie.douban.com/top250'
  4.     count = 0
  5.     urlqueue = multiprocessing.Queue()

  6.     t1 = geturl(urlqueue, count, url)
  7.     t1.start()
  8.     # t1.join()

  9.     t2 = getcontent(urlqueue)
  10.     t2.start()
  11.      t1.join()
  12.      t2.join()

  13.     # t3 = contrl(urlqueue)
  14.     # t3.start()
  15.     stop = time.time()
  16.     print(stop-start)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-21 21:08:34 | 显示全部楼层
看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-4-21 21:50:39 | 显示全部楼层
我还以为是一条线程爬1-25,51-75,101-125……
另外一条线程爬26-50,76-100,126-150……
这样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-5 16:38:12 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-11-8 20:35:17 | 显示全部楼层
能不能写写协程。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-12 06:57:06 | 显示全部楼层
ilovefishc
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-12 09:25:24 | 显示全部楼层
过来顶一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-21 03:45:08 | 显示全部楼层
记号一下,下次学多线程的时候过来取经
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 03:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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