你经常看到却经常忽视的init.py有什么用?摄影:产品经理有了它,乐高已经不香了Python初学者在阅读一些Python开源项目时,常常会看到一个叫做init.py的文件。下图为著名的第三方库requests的源代码:那么init.py有什么用呢?本文介绍它的两个用途。精简导入路径假设我们有两个文件main.py与writer.py,他们所在的文件结构如下图所示:main.py在DocParse
分类:
其他好文 时间:
2020-12-08 12:04:29
阅读次数:
3
Kafka里面的信息是如何被消费的?摄影:产品经理跟着产品经理去苏州吃面作为一个爬虫工程师,Kafka对你而言就是一个消息队列,你只需要掌握如何向里面写入数据,以及如何读取数据就可以了。请谨记:使用Kafka很容易,但对Kafka集群进行搭建、维护与调优很麻烦。Kafka集群需要有专人来维护,不要以为你能轻易胜任这个工作。”本文,以及接下来的几篇针对Kafka的文章,我们面向的对象都是爬虫工程师或
分类:
其他好文 时间:
2020-12-08 12:03:19
阅读次数:
3
为什么每一个爬虫工程师都应该学习Kafka摄影:产品经理与产品经理环游世界的瞬间这篇文章不会涉及到Kafka的具体操作,而是告诉你Kafka是什么,以及它能在爬虫开发中扮演什么重要角色。一个简单的需求假设我们需要写一个微博爬虫,老板给的需求如下:开发爬虫对你来说非常简单,于是三下五除二你就把爬虫开发好了:接下来开始做报警功能,逻辑也非常简单:再来看看统计关键词的功能,这个功能背后有一个网页,会实时
分类:
其他好文 时间:
2020-12-08 12:02:43
阅读次数:
2
一日一技:不使用try...except掩盖一些已知异常摄影:产品经理下厨:kingname产品经理的母上送的大闸蟹在我们写代码的过程中,可能会遇到很多很多的异常,其中有一些异常,我们知道它无关紧要,可以忽略,那么我们的代码可能会这样写:nums=[1,2,3,‘4‘,5,6]fornuminnums:try:print(num+1)exceptTypeError:pass在这段代码中,需要让列表
分类:
其他好文 时间:
2020-12-08 12:02:15
阅读次数:
2
一日一技:如何从Redis的列表中一次性pop多条数据?摄影:产品经理产品经理说我炒的蛋炒饭比图中好吃当我们想从Redis的列表里面持续弹出数据的时候,我们一般使用lpop或者rpop:importredisclient=redis.Redis()whileTrue:data=client.lpop(‘key‘)ifnotdata:breakprint(f‘弹出一条数据:{data.decode(
分类:
其他好文 时间:
2020-12-08 12:01:42
阅读次数:
2
如何使用Flupy构建数据处理管道摄影:产品经理厨师:kingname经常使用Linux的同学,肯定对|这个符号不陌生,这个符号是Linux的管道符号,可以把左边的数据传递给右边。例如我有一个spider.log文件,我想查看里面包含"ERROR"关键词,同时时间为2019-11-23的数据,那么我可以这样写命令:catspider.log|grepERROR|grep"201
分类:
其他好文 时间:
2020-12-08 12:01:17
阅读次数:
2
一日一技:使用PPT进行扣图,让你抛弃PhotoShop摄影:产品经理买单:kingname说到移除图片背景,很多人想到的是使用PhotoShop这种大型软件来处理。但实际上,最新版的PowerPoint就能实现这个目的。首先,我们把图片添加到PPT中,如下图所示。然后双击图片,进入图片编辑状态,如下图所示:此时,在左上角可以看到移除背景的按钮。点击它。PPT此时会自动猜测哪些内容可能是你要移除的
分类:
其他好文 时间:
2020-12-08 12:00:32
阅读次数:
2
温馨提示:本文基于Kafka2.2.1版本。本文主要是以源码的手段一步一步探究消息发送流程,如果对源码不感兴趣,可以直接跳到文末查看消息发送流程图与消息发送本地缓存存储结构图。从上文初识KafkaProducer生产者,可以通过KafkaProducer的send方法发送消息,send方法的声明如下:Future<RecordMetadata>send(ProducerRecord&l
分类:
其他好文 时间:
2020-12-08 11:59:45
阅读次数:
3
一日一技:炸掉你的内存——itertools.tee的缺陷摄影:产品经理陪伴:kingname在上一篇文章中,我们讲到了,使用itertools.tee可以让一个生成器被多次完整遍历:importitertoolsg=generator()g_1,g_2,g_3=itertools.tee(g,3)forrowing_1:print(row)forrowing_2:print(row)forrow
分类:
其他好文 时间:
2020-12-08 11:59:13
阅读次数:
3
一日一技:一个生成器如何当两个用?摄影:产品经理买单:kingname我们知道,Python里面的生成器只能被消费一次,例如下面的代码:defname_generator():fornamein[‘产品经理‘,‘kingname‘]:yieldnamedefsay_hello(g):print(‘hello函数开始运行‘)fornameing:print(‘hello‘,name)print(‘h
分类:
其他好文 时间:
2020-12-08 11:58:59
阅读次数:
3
使用yield压平多层嵌套字典列表混合数据摄影:产品经理买单:kingname在上一篇文章里面,我们讲到了如何使用Python的yield关键字简化代码,压平多层嵌套字典的。那么如果我们的数据不仅仅有字典,还有列表,是一个字典列表多层嵌套的数据怎么办呢?例如:nest_dict={‘a‘:1,‘b‘:{‘c‘:2,‘d‘:3,‘e‘:{‘f‘:4}},‘g‘:{‘h‘:5},‘i‘:6,‘j‘:{
分类:
其他好文 时间:
2020-12-08 11:58:44
阅读次数:
3
使用yield压平嵌套字典有多简单?摄影:产品经理买单:kingname我们经常遇到各种字典套字典的数据,例如:nest_dict={‘a‘:1,‘b‘:{‘c‘:2,‘d‘:3,‘e‘:{‘f‘:4}},‘g‘:{‘h‘:5},‘i‘:6,‘j‘:{‘k‘:{‘l‘:{‘m‘:8}}}}有没有什么简单的办法,把它压扁,变成:{‘a‘:1,‘b_c‘:2,‘b_d‘:3,‘b_e_f‘:4,‘g_
分类:
其他好文 时间:
2020-12-07 12:49:42
阅读次数:
14
温馨提示:整个KafkaClient专栏基于kafka-2.3.0版本。1、KafkaProducer概述根据KafkaProducer类上的注释上来看KafkaProducer具有如下特征:KafkaProducer是线程安全的,可以被多个线程交叉使用。KafkaProducer内部包含一个缓存池,存放待发送消息,即ProducerRecord队列,与此同时会开启一个IO线程将ProducerR
分类:
其他好文 时间:
2020-12-07 12:49:28
阅读次数:
11
本文将在RocketMQ消息发送systembusy、brokerbusy原因分析与解决方案的基础上,结合生产上的日志尝试再次理解brokerbusy以及探讨解决方案。首先,brokerbusy相关的日志关键字如下:[REJECTREQUEST]systembusytoomanyrequestsandsystemthreadpoolbusy[PC_SYNCHRONIZED]brokerbusy[P
分类:
其他好文 时间:
2020-12-07 12:48:48
阅读次数:
17
一日一技:从Scrapy学习模块导入技巧截图:产品经理我们平时导入第三方模块的时候,一般使用的是import关键字,例如:importscrapyfromscrapy.spiderimportSpider但是如果各位同学看过Scrapy的settings.py文件,就会发现里面会通过字符串的方式来指定pipeline和middleware,例如:DOWNLOADER_MIDDLEWARES={‘T
分类:
其他好文 时间:
2020-12-07 12:48:19
阅读次数:
12
温馨提示:由于微信单篇文章的字数限制,RocketMQDLedger日志复制分为两篇文章介绍。本篇紧接着上文源码分析RocketMQDLedger(多副本)之日志复制-上篇。3、EntryHandler详解EntryHandler同样是一个线程,当节点状态为从节点时激活。3.1核心类图其核心属性如下:longlastCheckFastForwardTimeMs上一次检查主服务器是否有push消息的
分类:
其他好文 时间:
2020-12-07 12:47:18
阅读次数:
11
一日一技:使用Locust对网络接口进行压力测试摄影:产品经理买单:kingname最近,有同学反应我的博客[1]访问速度有点慢,那么我如何直观地知道我博客的访问速度呢?我们可以使用Locust这个基于Python的压力测试工具来测试博客的访问速度。首先使用pip安装Locust:python3-mpipinstalllocust如果在macOS下安装出现了如下的报错信息:那么需要先执行如下命令:
分类:
其他好文 时间:
2020-12-07 12:47:03
阅读次数:
11