随笔分类 -  python

摘要:1. 安装phantomjs 下载地址:http://phantomjs.org/download.html 解压后将phantomjs.exe文件放到python根目录 2.安装pyspider pip install pyspider 运行:pyspider 或 pyspider all 提示报 阅读全文
posted @ 2019-03-19 14:38 卖鱼熊 阅读(1249) 评论(0) 推荐(1)
摘要:报错情况: 禁用该警告: import urllib3 urllib3.disable_warnings() 阅读全文
posted @ 2019-02-17 12:22 卖鱼熊 阅读(1079) 评论(0) 推荐(0)
摘要:在pycharm pip 包时,提示报错:module 'pip' has no attribute 'main' 原因:由于我的是pip 18.1 版本里没有main() 解决方法: 如不降级 pip,则到Pycharm目录下的helpers的packaging_tool.py文件 修改 do_i 阅读全文
posted @ 2019-02-17 11:18 卖鱼熊 阅读(1318) 评论(0) 推荐(0)
摘要:协程的特点是利用任务的阻塞时间去处理其他任务 处理任务的是线程,而协程是单线程,占用资源由大到小排:多进程>多进程>协程 gevent模块封装greenlet模块,greenlet模块封装yield 在gevent里使用tiem.sleep会失效,需要使用gevent.sleep,或者使用monke 阅读全文
posted @ 2019-02-16 16:09 卖鱼熊 阅读(277) 评论(0) 推荐(0)
摘要:两种创建生成器的方法: 将列表推导式的 [ ] 换成 ( ) 在函数里使用 yield 三种启动生成器的方法: next() send(参数) for循环 迭代器和生成器的区别: 迭代器可以减少资源耗用,实现循环 生成器是特殊的迭代器,可以通过yield暂停执行,也可以通过send启动方式传参改变执 阅读全文
posted @ 2019-02-16 14:34 卖鱼熊 阅读(228) 评论(0) 推荐(0)
摘要:一般使用for循环的顺序: 先创建一个迭代器:列表,并且列表内已存在数据 接着使用 for循环遍历列表 但这样存在一个问题,假如列表内的数据量很大,这样还未使用for循环便已经被列表占用很大的资源 这时我们就可以将这个迭代器做成一个生成数据的迭代器,而非只是占用大资源的数据,从而减少资源占用 pyt 阅读全文
posted @ 2019-02-16 11:44 卖鱼熊 阅读(319) 评论(0) 推荐(0)
摘要:迭代器的执行流程,以及说明可迭代对象不一定是迭代器,但迭代器一定是可迭代对象 实例1 实例1的优化 阅读全文
posted @ 2019-02-15 20:04 卖鱼熊 阅读(352) 评论(0) 推荐(0)
摘要:使用到: 进程池(重复利用进程),队列(用于进程间的通信,显示进度) 功能: 拷贝文件夹下的所有文件,显示进度 注意: 如涉及到进程池同时需要使用到队列,使用multiprocessing.Manager().Queue(),而非multiprocessing.Queue() 阅读全文
posted @ 2019-02-14 17:12 卖鱼熊 阅读(301) 评论(0) 推荐(1)
摘要:from multiprocessing import Pool import os import time def worker(num): print("task is runing " % (os.getpid(), num)) time.sleep(2) def main(): # 定义一个进程池,最大进程数3 po = Pool(3) ... 阅读全文
posted @ 2019-02-14 15:54 卖鱼熊 阅读(212) 评论(0) 推荐(0)
摘要:使用 multiprocessing 里的 Queue() 阅读全文
posted @ 2019-02-14 14:56 卖鱼熊 阅读(216) 评论(0) 推荐(0)
摘要:作用: 解决资源竞争问题 死锁: 当一组线/进程中的每个线/进程都在等待某个事件发生,而只有这组线/进程中的其他进程才能触发该事件,这就称这组线/进程发生了死锁。 创建的锁过多,可能会造成死锁问题。 可以在设计程序时从逻辑上避免死锁出现,延时、银行家算法等 # 以下代码如未使用互斥锁,最终计算出来的 阅读全文
posted @ 2019-02-13 12:42 卖鱼熊 阅读(211) 评论(0) 推荐(0)
摘要:# 创建类的线程 import threading import time class MyThread(threading.Thread): def run(self): for i in range(3): time.sleep(1) msg = "我是[线程]" + self.name + '@' + str(i)... 阅读全文
posted @ 2019-02-13 00:19 卖鱼熊 阅读(329) 评论(0) 推荐(0)
摘要:udp: 1.创建套接字 socket 2.绑定本地ip/port bind 3.收发数据 sendto/recvfrom 4.关闭套接字 close tcp客户端: 1.创建套接字 socket 2.连接服务端 connect 3.收发数据 send/recv 4.关闭套接字 close tcp服 阅读全文
posted @ 2019-02-12 23:40 卖鱼熊 阅读(502) 评论(0) 推荐(0)
摘要:# 创建 setup.py # 目录结构 注:以下命令是在虚拟环境执行 # 构建模块 $ python setup.py build # 生成发布压缩包 $ python setup.py sdist # 解压压缩包 $ tar -zxvf a_message-1.0.tar.gz # 安装模块,如 阅读全文
posted @ 2019-02-05 11:56 卖鱼熊 阅读(239) 评论(0) 推荐(0)
摘要:在属性/方法名前有双下划线的,称为私有属性/方法,私有属性/方法外部不能直接访问, 一般访问类的私有属性,可以通过自身调用 使用了私有属性的公有方法 间接访问私有属性/方法, 但python中并没有真正意义的私有,可以通过 _类名__属性/方法 来访问。 例: 有一个Woman类,内有私有属性 __ 阅读全文
posted @ 2019-02-03 13:30 卖鱼熊 阅读(901) 评论(1) 推荐(0)
摘要:a += b 相当于 a = a + b 存在赋值,会改变变量的引用,但列表的 += 比较特殊 # num_list列表的 += 操作实质是调用了列表的extend()方法,所以引用不会改变 num_list += num_list 相当于 num_list.extend(num_list) # n 阅读全文
posted @ 2019-02-02 10:12 卖鱼熊 阅读(433) 评论(0) 推荐(0)
摘要:问:有变量 a 和 b,将 a 和 b 的值调换 # 解法1:使用其他变量 c c = a a = b b = c # 解法2:不使用其他变量 a = a + b b = a - b a = a - b # 解法3:拆包(python特有的方法) a, b = (b, a) a, b = b, a 阅读全文
posted @ 2019-02-02 09:43 卖鱼熊 阅读(201) 评论(0) 推荐(0)
摘要:输入以下指令后再尝试安装 python3环境下输入: sudo apt-get install python3 python-dev python3-dev build-essential libssl-dev libffi-dev libxml2-dev libxslt1-dev zlib1g-d 阅读全文
posted @ 2019-01-13 20:29 卖鱼熊 阅读(1573) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2018-12-26 22:31 卖鱼熊 阅读(715) 评论(0) 推荐(0)
摘要:第一步 由于mysql版本问题 先尝试打开 sudo vim /etc/mysql/my.cnf 如空,再尝试打开 sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf # 号 注释该行 bind-address = 127.0.0.1 第二步 进入mysql my 阅读全文
posted @ 2018-12-06 00:02 卖鱼熊 阅读(2455) 评论(0) 推荐(0)