![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
python
小丫小屁孩
这个作者很懒,什么都没留下…
展开
-
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 · 2624 阅读 · 0 评论 -
python multiprocessing.Barrier
屏障构造函数有一个参数,是指管理的进程的数目Barrier.wait 是指阻塞进程,直到阻塞的进程数等于构造Barrier时传入的数值时解锁所有被阻塞的进程。就是说,我先到了wait,然后等着你,等你也到了wait,我们就一起走,等待的人数未构造Barrier时传入的数值。如可以看到两个进程输出的时间戳是一样的。如果把Barrier(num)的num变成3,以上代码会卡住。因为我们没...原创 2019-09-17 20:55:05 · 1292 阅读 · 0 评论 -
multiprocessing.Pool 进程池
进程池就是维持一定量的进程,当有任务时调用进程处理,没有任务时进程空闲,当任务过多时就会等有空闲进程后再进行处理。进程池有几个函数apply() 执行一个任务,会阻塞当前进程apply_async() 执行一个任务,不会阻塞当前进程apply会返回执行函数的结果,但是apply_async不会等待结果而是直接返回一个multiprocessing.pool.ApplyResult ob...原创 2019-09-17 20:35:21 · 1161 阅读 · 0 评论 -
TypeError: can't pickle _thread.lock objects
原因是使用Process(target=,args=(,))创建进程时,args不能是自定义类对象,或者不能pickle的类对象。解决方法,自定义类继承Process,在__init__中传入自定义对象。...原创 2019-09-17 16:51:42 · 527 阅读 · 0 评论 -
python 写进程时必须要在main中原因
因为创建的子进程会自动导入目标函数所在的脚本,如果创建Proces的代码和目标函数的代码写在一起就会导入自己,而导入后,如果没有写在main,就会又创建一个Process,又去导入目标函数所在脚本,这样无限循环。...原创 2019-09-16 23:32:10 · 2731 阅读 · 0 评论 -
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 · 318 阅读 · 0 评论 -
python RLock死锁
如果是Lock,使用acquire上锁后再使用acquire就会堵塞而如果是RLock 使用acquire上锁后如果再本线程中使用acquire不会堵塞,但是如果别的线程使用了acquire就会堵塞。一个实例如下:import threadinglock = threading.Lock()resource = 5def action(): global resource ...原创 2019-09-16 16:24:30 · 727 阅读 · 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 · 6832 阅读 · 0 评论 -
使用subprocess出现WinError
解决,加上参数shell=True即可import subprocessprocess = subprocess.Popen(‘D:’,shell=True)原创 2019-09-06 16:36:58 · 1072 阅读 · 1 评论 -
conda使用时出现SSLError
百度原因是没有安装Openssl,然后我按照要求安装后,还是不行,这是因为在安装的时候弹出了一个提示,说缺少一个组件是否现在安装,但是没仔细看选的否,这里选是就可以了。...原创 2019-09-03 10:27:57 · 2236 阅读 · 0 评论 -
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 · 736 阅读 · 3 评论