python写入文件较快_python用threading、Queue,实现快速爬取需求,但是发现写入到文件中有点数据是重复写入的,这是什么原因?...

运行结果中出现大量的重复的结果,我想到是什么原因,新手不是很懂,求大神告知?

在没有改为threading+Queue之前,是没有出现这种问题的。

相关代码 无关的代码就不展示了

import requests

import json,time,random

from collections import defaultdict

import threading

import Queue

from RotateUserAgentMiddleware import user_agent_list

class Aiqiyispider(threading.Thread):

def __init__(self,in_queue):

threading.Thread.__init__(self)

self.in_queue = in_queue

#爬虫所需的一些基础设置

.

.

.

.

.

def new_videourl(self,fristurl):

"""

爬虫的主体程序:爬取、判断、根据自己需要获取数据、保存数据

:return:

"""

def b_Spider(self,biaoq):

"""

对上面视频含有子视频的进行爬取,为上面new_videourl的补充部分

:return:

"""

def run(self):

"""

多进程主体程序

:return:

"""

while True:

try:

line = self.in_queue.get(timeout =2)

self.new_videourl(line)

except Exception,err:

break

if __name__=='__main__':

peacial = []

queue = Queue.Queue()

for i in xrange(4):

t = Aiqiyispider(queue)

# t.setDaemon(True)

# t.start()

peacial.append(t)

for tt in peacial:

tt.start()

file_qis = 爬取文件

for qis in file_qis:

all_file_id = qis.strip().split('\t')[0].split('|')[0]

queue.put(all_file_id)

for tt in peacial:

tt.join()

print 'END'

我就想知道出现这种结果的原因是什么?为什么出现??

下面为截取一部分结果,可以看出331844400这个出现了好几次,我的结果出现22次这行数据

331844400 331844400 {"流派": "流行", "音乐类型": "单曲MV", "语种": "韩语", "地区": "日韩"} 音乐 EXO - 冰淇淋蛋糕 CF花絮

357314200 357314200 {"流派": "流行", "音乐类型": "单曲MV", "语种": "韩语", "地区": "日韩"} 音乐 SUPER JUNIOR-D&E《触 (Can You Feel It?)》触触舞蹈 (大家的触触舞蹈)

218013800 218013800 {"流派": "流行", "音乐类型": "单曲MV", "语种": "韩语", "地区": "日韩"} 音乐 Bigbang - Oh Yeah

812884100 812884100 {"流派": "摇滚", "音乐类型": "单曲MV", "语种": "日语", "地区": "日韩"} 音乐 蒼井翔太 - 零

331844400 331844400 {"流派": "流行", "音乐类型": "单曲MV", "语种": "韩语", "地区": "日韩"} 音乐 EXO - 冰淇淋蛋糕 CF花絮

628752500 628752500 {"流派": "流行", "音乐类型": "单曲MV", "语种": "韩语", "地区": "日韩"} 音乐 GFRIEND - FINGERTIP

331844400 331844400 {"流派": "流行", "音乐类型": "单曲MV", "语种": "韩语", "地区": "日韩"} 音乐 EXO - 冰淇淋蛋糕 CF花絮

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值