- 博客(77)
- 资源 (4)
- 收藏
- 关注
原创 Python3之协程socket应用
服务端from gevent import monkey;monkey.patch_all()import geventfrom socket import *s = socket(AF_INET, SOCK_STREAM)s.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)s.bind(('127.0.0.1', 8080))s.listen(5)def
2017-08-31 18:25:32 1019
原创 Python3之协程爬虫应用
from gevent import monkey;monkey.patch_all()import gevent, requestsdef get_page(url): ret = requests.get(url).text with open('b.txt', 'a', encoding='utf-8') as f: f.write('%s-%s\n' %
2017-08-31 17:10:55 1180
原创 Python3之协程
协程定义又称微线程,纤程。英文名Coroutine。轻量级的线程,用户可以控制调度切换任务。协程使用的模块greenlet代码示例from greenlet import greenletdef eat(name): print('%s eat1' % name) g2.switch('quincy') print('%s eat2' % name) g2.swit
2017-08-31 16:45:15 304
原创 Python3之concurrent.futures的map方法,回调函数应用(important)
map用法代码演示from concurrent.futures import ThreadPoolExecutordef deal_num(n): return n ** 2if __name__ == '__main__': t = ThreadPoolExecutor() # for i in range(10): # t.submit(deal_n
2017-08-31 16:00:19 5211
原创 Python3之concurrent.futures实现线程池,进程池
关于concurrent.futures的官方文档concurrent.futures进程池代码演示from concurrent.futures import ProcessPoolExecutor, ThreadPoolExecutordef deal_num(n): return n ** 2if __name__ == '__main__': # 参数默认是CPU个数
2017-08-31 15:33:44 4724
原创 Python3之字符打印颜色
字体色 背景色 颜色描述 30 40 黑色 31 41 红色 32 42 绿色 33 43 黄色 34 44 蓝色 35 45 紫红色 36 46 青蓝色 37 47 白色 显示方式 效果 0 终端默认设置 1 高亮显示 4 使用下划线 5 闪烁 7 反白
2017-08-30 19:08:07 2013
原创 Python3之线程Queue实现生产者消费者模型
生产者消费者模型from threading import Threadimport queue, timeq = queue.Queue()def consumer(): while 1: res = q.get() time.sleep(2) print('消费者消费了\033[35m%s\033[0m' % res)
2017-08-30 18:54:04 1095
原创 Python3之多线程GIL、同步锁、信号量、死锁与递归锁、线程Queue、Event、定时器
GIL与互斥锁再理解线程一要把python代码交给解释器去执行,而此时垃圾回收线程和线程二也需要将自己的任务交给python解释器去执行,为了防止各个线程之间的数据产生冲突,谁拿到GIL锁的权限谁才能执行自己的任务,这就避免了不同任务之间的数据不会产生冲突,这是在同一个进程中加GIL锁会保证数据的安全,不同的数据要加不同的锁。死锁与递归锁死锁代码演示from threading import Thr
2017-08-30 17:22:13 2414
翻译 Markdown语法,写的时候可以过来溜达溜达
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl
2017-08-30 08:18:49 235
转载 div css用float时引起背景不正常显示的解决办法
当div里面套嵌多个用float定义的层是,背景图没有办法在firefox里面显示。上网搜了一下才找到解决的方法。 div+css布局无法避免的冗余标签,完全严格按照w3c的标准来布局是不可能的,想要在不同版本的浏览器下都表现出漂亮的网页,几乎无可避免地要使用一些多余的标签。 总结而言,div布局必须用到冗余标签的地方主要有三个: 一是背景图和背景色,当内层元素的css属性全部为“floa
2017-08-29 20:25:39 2280
原创 Python3之爬虫中回调函数的简单应用
import refrom multiprocessing import Poolimport requests'''<a href="/films/344264" title="战狼2" data-act="boarditem-click" data-val="{movieId:344264}">战狼2</a>'''movie_pattern = re.compile(r'}">(.*?)
2017-08-29 15:40:46 1611
原创 Python3之多线程
概念线程是CPU执行调度的最小单位,进程只是开辟内存空间,整合内存资源线程与进程区别线程:线程可以共享进程内的资源线程的创建比进程的创建内存要小进程:各个进程间的内存空间是相互隔离的,进程间的相互通信资源共享依赖IPC(interprocess communication)机制守护线程与守护进程守护进程代码演示import timefrom multiprocessing import Proce
2017-08-29 15:31:46 1603
原创 Python3之进程池与回调函数
进程池代码演示方式一from multiprocessing import Pooldef deal_task(n): n -= 1 return nif __name__ == '__main__': n = 10 p = Pool(4) for i in range(4): res = p.apply(deal_task, args=(
2017-08-28 16:14:41 3318
原创 mysql-5.7.19-winx64服务无法启动解决方案
解压mysql压缩包时没有data文件夹,不要手动创建,在cmd下直接运行命令: mysqld –initialize-insecure,data文件夹会自动生成,注意单词千万不要拼错,不要写成–initialise,也不要只写–initialize,如果不输入-insecure会生成随机密码,第一次登陆会出现问题!!!配置文件my.ini内容: [client] port=3306
2017-08-26 10:34:49 8544 3
原创 Python3之日志模板
import loggingdef log(): logger = logging.getLogger('服务端') logger.setLevel(logging.INFO) fmt = logging.Formatter('%(name)s-->%(asctime)s-->%(message)s') fh = logging.FileHandler('Serve
2017-08-25 20:10:06 1420
原创 Python3之os.walk()用法
代码示例import osg = os.walk(r'D:\Users\Quincy_C\PycharmProjects\S6')print(next(g))print(next(g))第一次next结果:得到的结果是是一个元组,元组的第一个元素是输入的文件路径,第二个元素是当前路径下所有的文件夹组成的列表,第三个元素是当前路径下所有文件组成的列表: (‘D:\Users\Quincy_C\P
2017-08-25 19:16:15 6949
原创 Python3之进程生产者消费者模型(important)
代码演示'''首先,消费者函数从队列中取一次数值然后调用q.task_done()通知生产者函数,<font color="#ff0000">该元素</font>我已经取过了,直到将全部元素取出。在生产者函数中调用q.join()时,函数被挂起,直到队列的数据被全部取走,函数才能继续执行,生产者函数执行结束后,消费者函数还在等待队列中的数据,但此时消费者函数已经没有存活的必要,所以当主进程结束时,可
2017-08-25 16:41:23 1606
原创 Python3之队列Queue、Process补充
代码演示from multiprocessing import Queue#Queue带参数代表队列中元素个数,不加参数代表队列元素个数无限制q = Queue(3)q.put(123)q.put([1, 2, 3])q.put({'a': 1, 'b': 2, 'c': 3})#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#队列中可以加入任何元素,没有数据类型限制,队列
2017-08-25 15:57:04 529
原创 Python3之多进程join、daemon
join当子线程调用join时,主线程会被阻塞,当子线程结束后,主线程才能继续执行。当队列Queue调用join时,被Queue作用的函数会 挂起,等Queue中的数据被全部取出时,被挂起的函数才能继续执行。daemon守护进程:当子进程被设置为守护进程时,主进程结束,不管子进程是否执行完毕,都会随着主进程的结束而结束。
2017-08-25 15:44:40 2227
原创 Python3之互斥锁
什么是互斥锁由于并发状态下,操作系统对多个进程进行调度,而多个进程可能都有操作硬件的需求,这时就会产生多个进程对资源的共享,而共享意味着竞争,会产生许多问题。这样就需要一种机制或者手段去解决竞争,使竞争变得有序化,从而使共享资源按照预定的结果去获取。这种手段就是加互斥锁代码演示import jsonimport osfrom multiprocessing import Process, Loc
2017-08-25 15:34:47 3996
原创 Python3之ftp下载简单代码
服务端import osimport socketimport sysimport structfrom multiprocessing import Processdef get(filepath): ''' 下载功能 :return: ''' with open(filepath, 'rb') as f: for line in
2017-08-24 18:32:17 1218
原创 Python3之进程、线程
进程什么是进程正在进行中或者正在处理任务的程序,比如运行中的QQ,正在播放音乐的酷我,都是进程,进程有优先级进程与程序的区别进程指正在处理任务或者正在进行中的程序。 一个程序启动两次属于2个进程程序指在硬盘中没有被执行的程序文件并发与并行并发:单核条件下,正在运行中的多个程序,CPU被操作系统调度,对遇到I/O操作和运行时间足够长的程序进行切换,并且在切换过程中对上次执行的结果保存在操作系统内存中
2017-08-24 15:57:08 628
原创 Python3之socket实现并发
服务端import socketfrom multiprocessing import Processs = socket.socket(socket.AF_INET, socket.SOCK_STREAM)s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)s.bind(('127.0.0.1', 8080))s.listen(5)
2017-08-24 11:09:31 992
原创 Python3之由通用字符名称“\u202A”表示的字符不能在当前代码页中表示出来
Bug is a bitch!!! 昨天写了一下FTP上传下载,一把辛酸泪啊,被一个莫名错误卡住了。 事情的始末:准备写个下载功能,然后嫌来回写路径麻烦,就直接把路径写好放在代码里,如图:然后每次调试代码就会去复制一下,然后就各种得不到结果。心想这不会是pycharm的bug吧,因为之前刚刚遇到过,新建一个Django项目,居然报socket错误,我就无奈了,找了好久没找到原因,昨天,就在昨天,
2017-08-24 07:59:52 17250 17
原创 Python3之基于UDP协议的网络编程
代码演示服务端from socket import *socket_server = socket(AF_INET, SOCK_DGRAM)socket_server.bind(('127.0.0.1', 8080))while 1: data, client_addr = socket_server.recvfrom(1024) socket_server.sendto(data
2017-08-23 15:18:32 1822
原创 Python3之优化版粘包解决问题
服务端import jsonimport socketimport structimport subprocessphone = socket.socket(socket.AF_INET, socket.SOCK_STREAM)phone.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)phone.bind(('127.0.0.1'
2017-08-23 14:54:23 1278 2
原创 Python3之socket编程解决粘包问题
什么是粘包当发送网络数据时,tcp协议会根据Nagle算法将时间间隔短,数据量小的多个数据包打包成一个数据包,先发送到自己操作系统的缓存中,然后操作系统将数据包发送到目标程序所对应操作系统的缓存中,最后将目标程序从缓存中取出,而第一个数据包的长度,应用程序并不知道,所以会直接取出数据或者取出部分数据,留部分数据在缓存中,取出的数据可能第一个数据包和第二个数据包粘到一起 粘包解决方案由于应用程序自己
2017-08-22 16:09:18 3967
原创 Python3之基于tcp模拟ssh远程执行命令
服务端import socketimport subprocessphone = socket.socket(socket.AF_INET, socket.SOCK_STREAM)phone.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)phone.bind(('127.0.0.1', 8080))phone.listen(5)pri
2017-08-21 15:46:05 1052
原创 Python3之socket网络编程
socket编程的两个循环:链接循环while 1: conn, addr = phone.accept() print(conn, addr) while 1: try: data = conn.recv(1024) if not data: break print('客户端信息:', d
2017-08-21 15:33:23 238
原创 Python3之subprocess模块
import subprocessres = subprocess.Popen('dir', shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)print(res.stdout.read().decode('gbk'))print(res.
2017-08-21 15:11:01 2330
原创 如何在fragment中获取自定义view的控件id
今天在CSDN上下载了一个关于广告轮播的demo,上面的控件是自定义view的控件。当我把它放到项目中犯了难,因为他直接在activity中定义,而我需要将其放入fragment中,所以报了一堆错误还有空指针,主要的问题及解决可见代码,需要注意的问题是,不能直接在oncreate方法中直接初始化控件,而是需要重写onStart()方法:public void onStart(){ super
2017-08-20 17:39:05 3368
原创 Python3之爬虫爬取豆瓣读书Top250
import requestsfrom bs4 import BeautifulSoupfrom openpyxl import Workbookexcel_name = "豆瓣读书.xlsx"wb = Workbook()ws1 = wb.activews1.title = '豆瓣读书'def get_html(url): header = { 'User-Ag
2017-08-20 17:16:27 605
原创 Python3之pickle模块
需要注意的问题:pickle模块支持python任意数据类型,包括对象。但是仅限于python程序间的交互。pickle模块的读写模式都是wb、rb类型的,文件需要以wb、rb模式打开。被pickle序列化后的文件内容不可读,但是反序列化后可以取出数据。
2017-08-19 14:30:01 1162
原创 Python3之装饰器
1.装饰器本质:就是闭包函数 那么什么是闭包函数? 首先闭包函数是一个内部函数,其次是对外部作用域的引用,而不是全局作用域的引用,此乃为闭包函数。2.装饰器体现的程序设计原则:开放封闭 开放:对扩展开放 封闭:对修改封闭3. def wrapper(func): def inner(*args,**kwargs): res = func(*args,**kwar
2017-08-19 11:37:09 214
原创 Python3之文件操作
1.主要常用的文件操作模式:r:读模式(默认) 文件存在则直接读取文件内容,不存在则报错w:写模式 文件存在则覆盖原内容写入新内容,文件不存在则创建文件并将内容写入a:追加模式 文件存在则追加原内容写入新内容,文件不存在则创建文件并将内容写入rb:读字节模式wb:写字节模式ab:追加字节模式2.常用的方法:2.1 f.read(参数):参数代表字符,一次读几个字符。 2.2 f.s
2017-08-19 11:05:38 555
原创 Python3之hashlib模块
import hashlib md5中可有参数但是也需要encode,这个参数俗称加盐 m = hashlib.md5()m.update(‘qaz‘.encode(‘utf-8’)) m.update(‘wsx‘.encode(‘utf-8’)) &&两次update的值(累加的效果)和这次: &&m.update(‘qazwsx‘.encode(‘utf-8’))的值是一样的 pri
2017-08-17 15:09:56 3805
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人