黄逗逗
发表于 2019-7-27 15:36:11
{:9_227:}
Hsfaa
发表于 2019-7-27 16:35:58
下下来看看
fan1993423
发表于 2019-7-30 17:49:03
@Stubborn 楼主,如果这句话for t in crawl_threads: t.join()在parser_threads = [] parser_name = ["parser_1","parser_2","parser_3"]之前,是不是相当于还是单线程运行
Stubborn
发表于 2019-7-30 20:39:52
本帖最后由 Stubborn 于 2019-7-30 20:42 编辑
fan1993423 发表于 2019-7-30 17:49
@Stubborn 楼主,如果这句话for t in crawl_threads: t.join()在parser_threads = [] parser_name = ["pars ...
到这里已经是采集线程结束了,关闭采集线程了
#等待队列情况
while not pageQueue.empty(): #判断是否为空 采集队列
pass
采集线程空了,没有任务,所以结束了采集(或者说生产数据线程)
最好你说下是哪行
fan1993423
发表于 2019-7-31 13:56:14
Stubborn 发表于 2019-7-30 20:39
到这里已经是采集线程结束了,关闭采集线程了
采集线程空了,没有任务,所以结束了采集(或者说生产 ...
while循环的用途我知道,我就是想问你的顺序是初始化采集线程->初始化解析线程->等待采集队列。。。。如果换一下顺序 初始化采集线程->等待采集队列->等待采集主线程结束 然后才去处理解析线程这样和你的结果是一样的吗?或者说有什么不同(其他具体执行程序不变)
Stubborn
发表于 2019-7-31 17:08:17
fan1993423 发表于 2019-7-31 13:56
while循环的用途我知道,我就是想问你的顺序是初始化采集线程->初始化解析线程->等待采集队列。。。。如 ...
虽然不知道你为什么有这个想法,不过看程序走就知道,采集线程的全部数据都是在往data队列里面存的。然后解析线程再从data队列里面取。结果没有测试,从代码上来看,结果会一样,但是速度就没有那么快,既然用了线程,就肯定是要求速度方面的,等待采集结束,再开解析,大致相当于,慢了一半的速度,具体我没有测试过,看代码说的,你有兴趣可以测试下
fan1993423
发表于 2019-7-31 17:15:10
Stubborn 发表于 2019-7-31 17:08
虽然不知道你为什么有这个想法,不过看程序走就知道,采集线程的全部数据都是在往data队列里面存的。然后 ...
我觉得这个可不可以理解采集完成一部分后就交了一部分给解析,从而加快速度
Stubborn
发表于 2019-7-31 21:32:38
fan1993423 发表于 2019-7-31 17:15
我觉得这个可不可以理解采集完成一部分后就交了一部分给解析,从而加快速度
可以的,当采集和解析运行之后,解析线程就会从data队列里面取数据,里面一旦有数据,就进行解析,从而加速的
fan1993423
发表于 2019-8-1 10:04:17
Stubborn 发表于 2019-7-31 21:32
可以的,当采集和解析运行之后,解析线程就会从data队列里面取数据,里面一旦有数据,就进行解析,从而加 ...
嗯,但是有个问题,python有GIL锁,在这里没开多进程的情况下,也就是单进程多线程,那么我有个疑问就是假设总速度不变,你现在将一部分采集给了解析,那么解析那部分会不会占用采集,从而使采集因为线程被占,速度变慢。而且你这个没加锁的话,有没有可能出现线程紊乱的情况?
木木头
发表于 2019-8-1 13:33:15
来了
Stubborn
发表于 2019-8-1 16:26:32
fan1993423 发表于 2019-8-1 10:04
嗯,但是有个问题,python有GIL锁,在这里没开多进程的情况下,也就是单进程多线程,那么我有个疑问就是 ...
解析线程为什么会被占用?看下代码,这个并不要锁,基于生产消费者模型,你看代码可以看到,所有采集线程的采集数据,全部往队列里面存。而所有解析,都是从队列里面取数据,唯一可能产生混乱的地方,就是保存的部分,可以看看开头,和代码贴里面,保存图片有何不同。另外什么地方需要加锁?线程大致的了解下可以参考这个链接点击我前往
jack3223635
发表于 2019-8-1 16:38:58
学习了!!!
phoniex628
发表于 2019-8-7 15:55:19
Mark 一下
庚午
发表于 2019-8-7 21:49:14
谢谢
w454227
发表于 2019-8-11 19:26:01
学习学习
w454227
发表于 2019-8-11 22:35:19
启动了crawl_1线程
当前正在工作的线程是:crawl_1,正在采集第1个页面
启动了crawl_2线程
启动了crwal_3线程
当前正在工作的线程是:crwal_3,正在采集第2个页面
当前正在工作的线程是:crawl_2,正在采集第3个页面
启动了parser_1线程
启动了parser_2线程
启动了parser_3线程
退出了crwal_3线程
退出了crawl_2线程
退出了crawl_1线程
退出了parser_2线程
退出了parser_3线程
退出了parser_1线程
退出主线程
这是什么原因大佬
83519489
发表于 2019-8-12 14:43:41
我直接来看答案了{:10_254:}{:10_277:}
Stubborn
发表于 2019-8-12 21:23:43
w454227 发表于 2019-8-11 22:35
启动了crawl_1线程
当前正在工作的线程是:crawl_1,正在采集第1个页面
启动了crawl_2线程
没有采集到东西,估计改了规则了把
zhixuan9650412
发表于 2019-9-8 10:36:06
0
Rhoda
发表于 2019-9-8 10:54:25
66
页:
1
2
3
4
5
[6]
7
8
9
10