monkey.patch_all()处理多线程问题
来源:互联网 发布:淘宝创建店铺流程 编辑:程序博客网 时间:2024/06/05 20:58
monkey解决方案
开多线程时monkey会阻塞住线程的继续执行,需要对monkey.patch_all进行处理,解决方案有2种:
1. monkey.patch_all(thread=False)
2. 直接用gevent.sleep()
from bs4 import BeautifulSoupimport requestsimport geventimport timefrom gevent import monkey, poolfrom threading import Threadmonkey.patch_all()jobs = []links = []p = pool.Pool(10)url = [ 'http://www.baidu.com',]def get_links(url): # time.sleep(2) r = requests.get(url) if r.status_code == 200: soup = BeautifulSoup(r.text, 'lxml') print('>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>') links + soup.find_all('a')def start_process(): time.sleep(2) # for url in urls: # jobs.append(p.spawn(get_links, url)) # gevent.joinall(jobs)if __name__ == '__main__': t = Thread(target=start_process, ) t.start() t.join()
上面的例子会卡住,具体解释见StackOverflow链接~
阅读全文
0 0
- monkey.patch_all()处理多线程问题
- 多线程问题及其处理
- 多线程问题及处理
- 多线程问题及处理
- 多线程问题及处理
- 多线程问题及处理
- 多线程问题及处理
- Java多线程问题及处理
- 多线程处理与效率问题
- Java多线程问题和处理
- java 多线程问题及处理
- 多线程处理:食堂进餐问题
- C# 多线程问题处理小结
- C++ 多线程处理求和问题
- 关于多线程处理数据并发问题处理
- Monkey常见面试问题
- Monkey常见面试问题
- 【转】Android多线程及异步处理问题
- Android通讯录、城市选择器列表的实现
- HDU 6199 DP
- Centos7 ffmpeg
- 将hdfs上的数据通过MapReduce上传到hbase上
- Android开发FrameLayout动态添加控件位置问题
- monkey.patch_all()处理多线程问题
- Java5
- 方阵
- 数据链路层的三个基本问题
- bzoj 1674: [Usaco2005]Part Acquisition(最短路)
- 深度学习中的激活函数与梯度消失
- 洛谷 P2391 白雪皑皑(并查集)
- 上传本地项目到码云
- 安卓图像更新学习总结