当前位置: 首页>>代码示例>>Python>>正文


Python ThreadPool.workJoin方法代码示例

本文整理汇总了Python中threadPool.ThreadPool.workJoin方法的典型用法代码示例。如果您正苦于以下问题:Python ThreadPool.workJoin方法的具体用法?Python ThreadPool.workJoin怎么用?Python ThreadPool.workJoin使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在threadPool.ThreadPool的用法示例。


在下文中一共展示了ThreadPool.workJoin方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: Crawler

# 需要导入模块: from threadPool import ThreadPool [as 别名]
# 或者: from threadPool.ThreadPool import workJoin [as 别名]
class Crawler(object):
	"""Main part, carwl the site"""
	def __init__(self, args):
		# 抓取深度
		self.max_deepth = args['deepth']
		# 指定当前深度
		self.current_deepth = 1
		# 线程管理
		self.threadPool = ThreadPool(args['threads'])
		# 指定存取数据库文件
		self.dbfile = args['dbfile']
		# 指定关键字
		self.keyword = args['keyword']
		# 是否自测
		self.testself = args['testself']
		# 当前层待访问的链接,用集合来去重
		self.unvisitedUrl = set()
		self.unvisitedUrl.add(args['url'])
		# 已访问的链接
		self.visitedUrl = set()
		self.q = Queue()
		# http header
		self.header = {
			'Accetpt': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
			'Accetpt-Encoding': 'gzip,deflate,sdch',
			'Connection': 'keep-alive',
			'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.76 Safari/537.36'
		}
		# 连接数据库
		self.connDB()

		self.isRunning = True

	def start(self):
		self.threadPool.startThreads()
		# 判断当前深度
		while self.current_deepth <= self.max_deepth:
			self.taskQueue()
			while not self.q.empty():
				url = self.q.get()
				# 往线程池中添加任务
				self.threadPool.addJob(self.getLinks, url)
			self.threadPool.workJoin() # 等待所有线程完成
			self.current_deepth += 1
		# 爬取结束
		self.isRunning = False
		self.closeDB()

	def fetchPage(self, url, retry=3):
		'''获取页面内容'''
		try:
			self.r = requests.get(url, headers=self.header, timeout=3)
			if self.r.status_code == requests.codes.ok:
				source = self.r.text
				self.writeDB(url, source)
				return source
		except Exception, e:
			if retry>0:
				return self.fetchPage(url, retry-1)
			else:
				logging.error('Open failed for 3 time: %s' % url)
开发者ID:tntC4stl3,项目名称:PythonCrawler,代码行数:63,代码来源:spider.py


注:本文中的threadPool.ThreadPool.workJoin方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。