- 博客(33)
- 问答 (4)
- 收藏
- 关注
原创 can't send non-None value to a just-started generator
意思是对于一个刚开始的生成器,必须send一个None进去。这是因为生成器生成后,第一次用end,会这样:从第一行代码跑到有yield的地方,然后yield中断,这个时候就算你send东西,也没有变量接受。但是当第二次send时,或者之前用了一次next的话,就会从yield处送变量进去,然后往下走到下一个yield处...
2019-09-18 19:40:24 780 3
原创 线程,进程,CPU时间片
线程是CPU调度的基本单位进程是CPU分配资源的基本单位CPU时间片是直接分配给线程的,线程拿到CPU时间片就能执行了CPU时间片不是先分给进程然后再由进程分给进程下的线程的。所有的进程并行,线程并行都是看起来是并行,其实都是CPU片轮换使用。线程分到了CPU时间片,就可以认为这个线程所属的进程在运行,这样就看起来是进程并行。线程也一样。...
2019-09-18 13:23:00 3115 1
原创 python multiprocessing.Barrier
屏障构造函数有一个参数,是指管理的进程的数目Barrier.wait 是指阻塞进程,直到阻塞的进程数等于构造Barrier时传入的数值时解锁所有被阻塞的进程。就是说,我先到了wait,然后等着你,等你也到了wait,我们就一起走,等待的人数未构造Barrier时传入的数值。如可以看到两个进程输出的时间戳是一样的。如果把Barrier(num)的num变成3,以上代码会卡住。因为我们没...
2019-09-17 20:55:05 1381
原创 multiprocessing.Pool 进程池
进程池就是维持一定量的进程,当有任务时调用进程处理,没有任务时进程空闲,当任务过多时就会等有空闲进程后再进行处理。进程池有几个函数apply() 执行一个任务,会阻塞当前进程apply_async() 执行一个任务,不会阻塞当前进程apply会返回执行函数的结果,但是apply_async不会等待结果而是直接返回一个multiprocessing.pool.ApplyResult ob...
2019-09-17 20:35:21 1227
原创 TypeError: can't pickle _thread.lock objects
原因是使用Process(target=,args=(,))创建进程时,args不能是自定义类对象,或者不能pickle的类对象。解决方法,自定义类继承Process,在__init__中传入自定义对象。...
2019-09-17 16:51:42 567
原创 python multiprocessing.Pipe的关闭问题 close,recv卡住问题
主要讲close问题,和recv卡住问题recv卡住是因为他要等待管道中有数据接收,如果没数据就卡住,但是我想触发EOFError,看被人解释是当管道中数据没有东西时就会抛出EOFError,但是我这里死活不抛出,就是卡住。后来发现是close的问题,但是下面的代码我也加了close了,from multiprocessing import Processfrom multiprocess...
2019-09-17 15:56:50 4436 1
原创 python 写进程时必须要在main中原因
因为创建的子进程会自动导入目标函数所在的脚本,如果创建Proces的代码和目标函数的代码写在一起就会导入自己,而导入后,如果没有写在main,就会又创建一个Process,又去导入目标函数所在脚本,这样无限循环。...
2019-09-16 23:32:10 2792
原创 python threading.Condition threading.Event 使用队列完成线程同步
根据条件同步线程condition相当于一个锁,有acquire方法和release方法,还有wait,notify,notifyAll方法,使用acquire方法可以获得一个锁,使用wait方法就会放掉锁,等其他线程中有使用notify方法时,在wait处继续线程。notify会唤醒一个wait,但是不会立即跳转到另一个线程的wait处,必须在notify后使用release才能跳转到正在...
2019-09-16 20:00:28 345
原创 python RLock死锁
如果是Lock,使用acquire上锁后再使用acquire就会堵塞而如果是RLock 使用acquire上锁后如果再本线程中使用acquire不会堵塞,但是如果别的线程使用了acquire就会堵塞。一个实例如下:import threadinglock = threading.Lock()resource = 5def action(): global resource ...
2019-09-16 16:24:30 822 1
原创 python给命令行启动的程序发送ctrl c
最近写了多个scrapy爬虫,想统一管理一下,scrapy爬虫启动需要命令行,最重要的是想实现暂停爬虫的功能,如果在命令行中就很简单,直接ctrl c 那么在程序中对于命令行启动的程序怎么使用ctrl c 呢,直接输入ctrl c 没用。这个时候看到了有人用signal给相应进程发送信号,这些信号就相当于使用ctrl c 时程序接受到的信号,然后就会停止。主要使用 os.kill(pid,si...
2019-09-07 08:39:20 7097
原创 使用subprocess出现WinError
解决,加上参数shell=True即可import subprocessprocess = subprocess.Popen(‘D:’,shell=True)
2019-09-06 16:36:58 1135 1
原创 如何查找对参数加密的js代码
遇到请求有加密参数一般是去百度,但是从没有人说怎么找到的,都是直接说哪一个是加密函数。于是向看看别人怎么找js代码的,一般是在网页中F12后按Ctrl+Shift+F全局搜索加密参数的名字,但是有些js代码是加密的直接搜参数是搜不到的,最常见的就是这种:????我要搜索一个_sn,但是全局搜索搜索一下神么都没有,原因是_sn被加密了,直接搜搜不到,那么换成这种加密方式使用unicode码代替...
2019-09-03 15:57:33 2804
原创 conda使用时出现SSLError
百度原因是没有安装Openssl,然后我按照要求安装后,还是不行,这是因为在安装的时候弹出了一个提示,说缺少一个组件是否现在安装,但是没仔细看选的否,这里选是就可以了。...
2019-09-03 10:27:57 2282
原创 \x75\x73\x65\x20\x73\x74\x72\x69\x63\x74解码
这是js代码加密的一种,其实就是用字节代替了字符。比如说"\x65",由于\x的存在(\x代表这是一个16进制,而一位十六进制代表了四位二进制,所以这里两位十六进制代表了8位二进制,也就是说这代表一个字节),它会被认为是一个十六进制数代表的字符,用utf8解码时代表字符e,解码的过程是,把65从十六进制转为十进制,然后的到一个0-128的数,然后这个数对应英文字符中的一个字符(在utf8中英文字...
2019-09-02 22:23:34 21951
转载 scrapy发送json数据
scrapy发送json数据不能用FormRequest,而是要用Request具体代码:yield Request(url, method="POST", body=json.dumps(data), headers={'Content-Type': 'application/json'},callback=self.parse_json)原博客链接:https://blog.csdn...
2019-08-02 11:46:28 597
原创 python正则表达式卡死程序
记一次未知错误这是出问题的代码,本来是想匹配resp.text中的一个page_id,结果程序迟迟不返回结果,后来发现是re.findall这里卡死了,不太理解(对正则表达式只会简单使用)。import requestsimport refrom bs4 import BeautifulSoupheaders = { 'user-agent':'Mozilla/5.0 (Wind...
2019-08-02 09:42:54 2781
原创 爬取携程景点评论门票的接口(只是讲怎么找接口)
费话不多少,主要是靠接口爬取,那么怎么获得接口就是一个问题了。开始的页面是这样的:输入杭州后,然后打开fiddler开始抓包,注意这是最大的错误,就是这个错误导致了我一直找不到接口,这样点击搜索后是找不到返回数据的接口的,因为在你杭州输入搜索框后即使没有点击搜索按钮,这个时候已经返回了数据。所以在你输入杭州之前就应该打开了fiddler。ok,正确的接口如下(8.1测试时的接口):点击w...
2019-08-01 15:08:32 1906 4
原创 Relative path in absolute URI:
运行的时候出现了这个,原因是我是直接找到文件的属性然后粘贴复制的路径其实这个路径有问题,就是说这个路径的C:…的C前边还有个东西,如果按BackSpace会发现光标没有移动,但此时删掉了一个东西,删掉之后再用这个路径就没问题了。...
2019-07-12 15:21:14 2377 2
原创 windows下运行mapreduce(本地运行)
windows下运行mapreduce并不需要配置什么文件,hadoop-2.7.3.tar.gz下载后解压,然后添加环境变量,主要是添加hadoop目录下的bin目录。然后在网上下载hadoop.dll(https://github.com/SweetInk/hadoop-common-2.7.1-bin)和winutils.exe(https://github.com/steveloughra...
2019-07-12 14:27:28 2418
原创 模拟新浪微博登录获取Cookie,使用selenium,保存验证码再识别
最先是想模拟请求然后得到cookies,但最后发现验证码这一步绕不过,因为关键跳转需要一个door参数,这个door参数就是验证码,网上博客也在这一部分断片了。然后只能是保存验证码,然后使用打码平台来识别。保存验证码的时候又发现验证码的url每次请求都会不同,只能自己截图来解决,利用selenium自带的截屏函数,截屏后,自己手动找到验证码的坐标,然后进行截图,只要找一次坐标就行了,剩下的都根...
2019-07-11 10:53:21 858
原创 Scrapy下载中间件Download Middleware
本文主要讲每个中间件的方法的处理过程process_request 专门处理requestprocess_response 专门处理responseprocess_exception 专门处理exception,这个exception可以是process_request process_response 抛出的错误,也可以是下载器抛出的错误中间件的处理就相当于一个流程线中间件一 -...
2019-07-06 10:49:38 551
原创 搜狗微信文章url解码
最近看教程爬取搜狗微信文章,前边工作做好爬取ok,到了抓取每个文章的url时候出现了问题这一串并不是文章真正的url,直接点的会弹出输入验证码,ok,去百度,吸取各个大佬的经验,得知了这只是一个未处理的url,处理过后才能得到真正的url。具体过程(吸取前人经验总结的,百度真是个好东西):首先这个url不是真正的url,在网页中点击标题后,会触发一个事件,这个事件会为我们在网页源代码中看到...
2019-06-30 15:38:32 3389 4
原创 爬虫521应对
要做一个动态ip池,结果爬ip地址的时候遇到一个网站返回521百度后根据前人的经验得知这种网站是有两次请求,第一次请求返回一个cookie(这时候状态是521),然后第二次请求带着这个cookie请求就会又得到一个cookie,这个cookie可以用第一次请求返回的js代码获得,用这两个cookie同时请求才能获得正确的response。而且两次请求的User-Agent一定要一样所以要设置he...
2019-06-28 14:49:53 930
原创 使用hdfs 的 Java API创建目录显示UnknownHostException:hadoop02
错误截图:简单的创建一个目录,却告诉我不知道hadoop02是什么,因为我是把,core-site.xml和hdfs-site.xml文件放到工程下,然后new Configuration的时候会自动找到工程下的hdfs-site.xml读取,然而这个hdfs-site.xml中的hadoop02,他不知道是什么东西,最后把hdfs-site.xml和core-site.xml中的hadoop...
2019-05-25 23:43:10 386
原创 hadoop ha 使用JavaAPI
主要问题是出现在core-site.xml和hdfs-site.xml放在工程中哪个位置HdfDemo是需要加载配置文件的包,把core-site.xml和hdfs-site.xml放在和包同一级的目录下。如上图所示,测试一下Configuration conf = new Configuration();System.out.print(conf.get("fs.defaultFS"))...
2019-05-25 23:07:12 248
原创 JAVA:ArrayList的浅复制问题
ArrayList的add方法的源码,可以看到仅仅是把对象用’='号复制了一下,但是更改如果更改外边的e的话,ArrayList里的对象就会随之改变 public boolean add(E e) { ensureCapacityInternal(size + 1); // Increments modCount!! elementData[size++] = ...
2019-05-16 16:52:04 689
原创 scrapy Missing scheme in request url
今天在写爬虫的时候出现这个问题,报错为:Traceback (most recent call last): File "E:\anaconda\Anaconda3\lib\site-packages\twisted\internet\defer.py", line 654, in _runCallbacks current.result = callback(current.res...
2019-05-15 15:13:34 282
原创 MapReduce的分组
一:MapReduce的分组其实就是把相同的key合并到一起比如hadoop 1hadoop 1hadoop 1分组后变成 hadoop <1,1,1> 所以Reducer类的reduce的方法的参数是map传出的key和value的迭代器,这个迭代器就是 <1,1,1>那么问题来,他是怎么比较key是否相同的,一开始我以为是key的equal方法,但是偶...
2019-05-11 00:13:12 1973
原创 两个ResourceManager都是active
一开始出现了两个ResourceManager都是active的情况,但是没在意,杀死一个RM (不杀死跑不动)集群正常启动,也能跑任务。这样的话就不是ha了,于是准备找下错误,反复启动发现,第二台启动时zkfc总是失败,查看logs说什么parentnode 不存在,让再格式化一下(我是在第一台机子上格式化zk的,而且zookeeper上有hadoop-ha借点),同时发现三台机子上zookee...
2019-05-07 11:33:08 1300
原创 jar包导出warning
今天导出jar包,出现warning但是有没有什么错误,之后发现自己的程序中有叹号,把叹号处理掉后发现再打包就没问题了
2019-05-05 19:37:15 669
原创 java连接 sql server汇总
java连接 sql server汇总查了很多博客,各种博客方法不一,踩了很多坑,发现有些博客有的部分很有用,而有的部分已经有了新版本,现在把这些东西都汇总一下。第一步:完成https://blog.csdn.net/lujiachun1/article/details/53044494中的1,2,3,4,5步,注意不要更改第五步中的IP地址,只启动IP地址和设置端口号。这个时候你会发现自己主...
2019-04-19 11:26:51 148
原创 SQL Server 2017使用IP作为服务器名连接服务器
java连接数据库之用IP做服务器名连接数据库因为要用java连接数据库,但是java要用IP当服务器名,然后用sa用户名,和密码登录数据库(就是数据库在ip这台主机上,我要指明要登陆它,登录它的时候又需要有用户名和密码)。如这篇文章的内容就是让sqlserver支持以ip作为服务器名称,然后用sa用户名和密码登录服务器(必须有sa用户并且启用了如果没有自行百度,其实这里在安装Sql S...
2019-04-16 23:52:29 10910
原创 java学习笔记:NIO(NEW I/O)
java学习笔记:NIO(NEW I/O)(一)为了实现更高效的I/O(二)是对块进行处理,而不是对一个一个字节处理,这样会更高效。(三)这里的块就是各种缓冲区,先把数据写到缓冲区中,然后将缓冲区的数据一并写到文件中。(四)缓冲区类ByteBufferShortBufferCharBufferIntBufferLongBufferFloatBufferDoubleBuffe...
2019-04-09 19:32:22 184
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人