
Python3
文章平均质量分 61
Arthur54271
人生苦短,我用Python
展开
-
Python3制作二维码
#从键盘输入一句话,把它做成二维码的信息#根据url生成二维码import qrcodedef qrcodeWithUrl(url): img=qrcode.make(url) #保存图片 savePath='1.png' img.save(savePath) print(img)#根据输入内容生成二维码def qrcodeWithText...原创 2018-03-30 09:20:56 · 2326 阅读 · 1 评论 -
Python3基础01
Python整理1.多行注释’’’ ’’’中可以加单行注释#,2.但多上注释中不可以加多行注释,前提是内部和外部多行注释格式不同3.单行注释也可以写多行注释,查找关键字,不可以当关键字命名float第二种声明方法转义字符\r:表示回到当前行的开头位置换行符“\”放在print字符串结尾:一行写不完的时候用元组的标志是逗号“,”,定义后不可修改。字典标志是{}多变量赋值多变量赋多值======数据类...原创 2018-03-30 09:27:56 · 146 阅读 · 0 评论 -
Python两个进程沟通问题
#在父进程中创建两个子进程,一个往Queue写数据,一个从Queue读数据,## 用同一个消息队列from multiprocessing import Queue,Processimport time,randomdef write(q): for value in ['A','B','C','D']: print('Write:Put %s to Queue'%...原创 2018-03-30 16:59:31 · 713 阅读 · 0 评论 -
Python进程间通信--Queue
#进程间通信--Queue--操作系统开启消息队列'''Process有时是需要通信的,操作系统提供了很多机制来实现进程间通信而Queue就是其中一个1、Queue的使用问题,可以使用multiprocessing模块下的Queue实现多进程直接的传递,Queue本身就是一个消息队列,首先'''#但是MAC的qsize 用不了。。,所以本篇代码会报错NotImplementedE...原创 2018-03-30 13:11:02 · 337 阅读 · 0 评论 -
Python进程池Pool中的Queue
========异步#进程池中的Queue'''如果要用Pool创建进程,就需要使用multiprocessing.Manager()中的Queue,与multiprocessing中的Queue不同'''from multiprocessing import Manager,Poolimport osdef write(q): print('write启动') ...原创 2018-03-31 11:02:05 · 4588 阅读 · 0 评论 -
Python-list用求模分表
list1=[]for i in range(100): list1.append(i)server01=[]server02=[]server03=[]server04=[]for i in list1: if i%4==0: server01.append(i) elif i%4==1: server02.append(...原创 2018-03-31 12:56:01 · 527 阅读 · 0 评论 -
Python-如果输入(input())里包含非数值的东西,提示重新输入
#判断,如果str_num里包含非数值的东西,提示重新输入#方法一# while True:# try:# str_num = input('input a number:')# num=float(str_num)# print(num)# break #若输入的正确,则退出,错误执行except下面代码...原创 2018-03-31 15:04:16 · 28844 阅读 · 0 评论 -
Python--threading线程
#一个进程一旦创建出来,一定有一个主线程#为了提高效率,我们可以使用多线程来下载文件#多任务可以由多线程来完成,也可以由单进程来完成,CPU轮询策略#thread模块----已经被废弃了!#threading模块--Python3中的,代替thread,所以Python3中不支持thread,Python2中支持#为了兼容代码,python3将thread重命名为'_thread'#所...原创 2018-03-31 17:08:57 · 297 阅读 · 1 评论 -
Python3-根据线程(Thread数量来查看线程生命周期,第一种创建线程方法
import threading,time,random#time就是时间戳1970,'''查看线程数量,根据线程数量来查看线程生命周期。线程之间是并行的,但是主线程是最后死亡。'''def sing(): for i in range(3): print('正在唱歌。。。。%d'%i) # time.sleep(random.random()*...原创 2018-03-31 21:39:05 · 4499 阅读 · 0 评论 -
Python3-第二种创建线程方法
'''线程创建方式:1、 t1=threading.Thread(target=sing)2、定义自定义类,继承threading.Thread类、复写run()方法'''import threading,time,randomclass MyThread(threading.Thread): def run(self): #线程要干的事情 fo...原创 2018-03-31 21:56:41 · 539 阅读 · 0 评论 -
Python-copy模块-浅拷贝copy.copy()
import copy# a = 11# b = a# a = 12# print(b)#输出结果:11 --无影响#浅拷贝--# 1、=赋值# download_list = [11,22,33]# copy_list = download_list## download_list.append(44)# print(copy_list)# 输出结果:[11, 22, 33, 44] --有影响...原创 2018-04-01 18:07:11 · 279 阅读 · 0 评论 -
多进程VS多线程
'''功能:进程,能够完成多任务,if 比如在一台能够同时运行多个QQ:线程,能够完成多任务,比如一个QQ中的多个聊天窗口。定义:进程是系统进行资源分配和调试的一个独立单位。线程是进程的一个实体,是CPU调用和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,但是它可以与同属于一个进程的其它线程共享进程所拥有的全部资源。区别:一个程序至少有...原创 2018-04-01 19:35:19 · 177 阅读 · 0 评论 -
Python3-线程执行顺序问题(生命周期)
import threading#2、线程的执行顺序import timeclass MyThread(threading.Thread): def run(self): for i in range(3): time.sleep(1) msg = "I'm " + self.name + "@" + str(i) ...原创 2018-04-01 15:00:59 · 1793 阅读 · 0 评论 -
Python3-多线程共享全局变量
#多线程---全局变量----共享(线程并不像进程那样创建一个进程就Copy一次代码)from threading import Threadimport time,randomg_num = 100def work1(): global g_num for i in range(3): g_num += 1 time.sleep(ra...原创 2018-04-01 15:13:39 · 5436 阅读 · 1 评论 -
Python3-列表(容器)当做实参传递到线程中(暂未加锁)
#列表(容器)当做实参传递到线程中(暂未加锁)#总结: ''' 在一个进程内的所有线程共享全局变量,能够在不适用其它方式的前提下完成多线程之间的数据共享 缺点:线程是对全局变量的随意更改可能造成多线程之间对全局变量引用比较混乱(线程安全成了问题) '''import threadingimport time,random,copydef work1(download_lis...原创 2018-04-01 17:00:33 · 367 阅读 · 0 评论 -
Python3-为多线程上锁
#在threading模块当中,定义一个Lock类,可以方便的处理锁定:(线程之间的锁是互斥的)#互斥锁'''当多个线程几乎同时修改某一个共享数据的时候,需要进行同步控制。线程同步能够保证多个线程安全访问“竞争资源”,最简单的同步机制就是引用互斥锁。互斥锁为资源引入一个状态:锁定/非锁定状态。某个线程要更改共享数据时,先将其锁定,此时资源的状态为“锁定”,其它线程不能更改;直到当前...原创 2018-04-01 23:35:00 · 1768 阅读 · 0 评论 -
Python3-多线程死锁问题
#1、死锁:前提是有多个锁'''在线程间共享多个资源的时候,如果两个线程分别占有一部分资源并且同时等待对方的资源时,就会造成死锁。尽管死锁很少发生,但一旦发生就会造成应用的停止响应。'''#2、例子:#有两个人分别做“西兰花”和“红烧肉”,每个人都需要“锅”和“铲子”才能炒菜。import threading,timeclass XiLanHua_Thread(threadi...原创 2018-04-02 00:47:59 · 2319 阅读 · 0 评论 -
Python3-线程中应用队列
#生产者与消费者模式'''1.队列(1)特点:先进先出(2)python2VSpython3python2: from Queue import queuepython3:from queue import Queuejoin--阻塞动作blocked--状态(3)使用Python的Queue模块中提供了同步的、线程安全的队列类a.FIFO----(First In Fi...原创 2018-04-02 09:33:07 · 874 阅读 · 0 评论 -
Python3-线程应用队列(生产者与消费者模式--2生产者VS4消费者)
#两个厨师对四个顾客#生产者与消费者模式'''定义: 在并发编程中使用生产者和消费都模式能够解决绝大多数并发问题。该模式通过平衡生产线程和消费线程的工作能力来提高程序的整体处理数据的速度。案例: 厨师做包子和顾客吃包子问题。 当生产的慢,消费的快的时候,get()会发生阻塞,等待 当生产的忙,消费的快的时候,get_nowait()会发生queue.Em...原创 2018-04-02 14:02:20 · 553 阅读 · 0 评论 -
Python3-线程应用队列(生产者与消费者模式--多生产者VS多消费者)
#复杂的--多对多#生产者与消费者模式'''定义: 在并发编程中使用生产者和消费都模式能够解决绝大多数并发问题。该模式通过平衡生产线程和消费线程的工作能力来提高程序的整体处理数据的速度。案例: 两个厨师对四个顾客 厨师做包子和顾客吃包子问题。 当生产的慢,消费的快的时候,get()会发生阻塞,等待 当生产的忙,消费的快的时候,get_nowa...原创 2018-04-02 14:22:29 · 1913 阅读 · 0 评论 -
Python3-threading.local()代替普通全局变量
##threading.local():针对各个线程的一个全局对象'''在多线程环境下,一每个线程都有自己的数据。一个线程使用自己的局部变量比使用全局变量好,因为局部变量只有线程自己能看见,不会影响其它线程,而全局变量的修改必需加锁(阻塞--效率低)但是在使用局部变量的时候,就在函数间调用的时候,传递起来很麻烦。每个函数一层一层调用这个传递过来的参数,很麻烦。用全局变量,不安全,...原创 2018-04-02 16:25:09 · 2225 阅读 · 0 评论 -
Python3-异步进程回调函数(callback())
#异步'''举例:你喊你朋友吃饭,你朋友正忙,如果你一直在那等他,等你朋友忙完了,你们一块去。--同步调用你喊你朋友吃饭,你朋友正忙,如果你自己做你自己的事,你朋友忙完,找到你,一块去吃饭。--异步调用'''# from bs4 import BeautifulSoupfrom multiprocessing import Process,Poolimport osimp...原创 2018-04-02 17:40:45 · 8810 阅读 · 1 评论 -
Python3-md5加密
# 由于MD5模块在python3中被移除# 在python3中使用hashlib模块进行md5操作import hashlib# 待加密信息str = 'this is a md5 test.'# 创建md5对象h=hashlib.md5()# Tips# 此处必须声明encode# 若写法为hl.update(str) 报错为: Unicode-objects mu...翻译 2018-04-17 15:27:52 · 1685 阅读 · 0 评论 -
Python3-主要用多进程而不是多线程的原因
#比较线程和进程效率问题from threading import Threadfrom multiprocessing import Processimport time#计数def two_hundred_million(): start_time=time.time() i=0 for _ in range(200000000): i+=1...原创 2018-04-05 09:38:05 · 1777 阅读 · 0 评论 -
Python3-协程(微线程,纤程)
#协程#~又称微线程,纤程。'''它是比线程更小的执行单元,因为它自带CPU上下文。这样只要在合适的时机,我们可以把一个协程切换到另一个协程当中。只要这个过程保存或恢复CPU上下文,那么程序就可以运行。通俗的理解:在一个线程中的某个函数,可以在任何地方保存当前函数的一些临时变量等信息,然后切换到另外一个函数中执行,(注意不是通过调用函数的方式来实现),并且切换的次数以及什么时候再切换到...原创 2018-04-05 14:08:07 · 687 阅读 · 0 评论 -
Python3-生成器与列表推导式的区别
#生成器'''1.什么是生成器通过列表推导式,可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,占用很大的存储空间。如果我们仅仅需要访问前面几个元素,后面元素的占用存储空间就被浪费了。所以,如果列表元素可以按照某种算法推算出来,那我们就可以在循环当中不断地推导它,生成元素。这样就不必创建完整的list,从而大大节省了存储空间。...原创 2018-04-05 15:18:04 · 554 阅读 · 0 评论 -
Python3-抓取某翻译网页 获取js数据
#抓取有道翻译网页 获取js数据#找接口,至少尝试三次以上from urllib import parse,requestimport time,randomimport hashlibimport json#md5加密def getMd5(str): md5 = hashlib.md5() md5.update(bytes(str, encoding='utf...原创 2018-04-17 21:54:17 · 1105 阅读 · 0 评论 -
Python3-生成器与yield
#斐波那契数列指的是这样一个数列:1、1、2、3、5、8、13、21、34、…import time# def fib(times):# a = 0# b = 1# n = 1# while n<=times:# print(b)# a,b = b,a+b# n+=1# fib(7)#生成...原创 2018-04-05 19:52:57 · 325 阅读 · 0 评论 -
Python3-迭代器Iterator
#迭代器'''迭代是访问集合元素的一种方式。迭代器是一个可以记住遍历位置的对象。迭代器对象从集合的第一个元素开始访问,直到所有的元素都被访问完结束。如果想访问一个元素,需要把这个元素前面的所有元素都遍历后,才可以访问到。'''#1.可迭代的对象:像(1)、(2)这些对象称之为可迭代对象,Iterable#(1)、以直接作用for循环的数据类型有:list\tuple\dict...原创 2018-04-05 20:52:44 · 887 阅读 · 0 评论 -
Python3-copy模块-浅拷贝与深拷贝
#深拷贝#浅拷贝#1 等号# list1=[11,22,33,['a','b']]# list2=list1# list1.append(44)# print(list1)# print(list2)#2 copyimport copy# c=[11,22,33,['a','b']]# d=copy.copy(c)# c.append(44)# print(c)# ...原创 2018-04-06 00:15:38 · 2052 阅读 · 0 评论 -
Python3-正则表达式~pattern.findall
import repattern=re.compile(r'\d+')# pattern=re.compile(r'\d')#['1', '2', '3', '4', '5', '6', '7', '8', '9']s=pattern.findall('hello 12345 6789')# print(s)#['12345', '6789']# 举例1:I love China 输...原创 2018-05-09 14:35:53 · 4344 阅读 · 0 评论 -
Python3-正则表达式~pattern.finditer
import repattern = re.compile(r'\d+\.\d*')s = pattern.finditer("3.241592653 PI 100 10001.11 3.")print(s)#返回一个对象 <callable_iterator object at 0x101fb8780>for item in s: print(item)/L...原创 2018-05-09 15:31:14 · 900 阅读 · 0 评论 -
Python3-正则表达式~pattern.split
import re# path=r'//Users//apple//PycharmProjects//stage4//spider//2018——0307//re_split.py'path='Users/apple/PycharmProjects/stage4/spider/2018——0307/re_split.py'pattern=re.compile(r'/')s=patter...原创 2018-05-09 15:32:51 · 728 阅读 · 0 评论 -
Python3-正则表达式~pattern.sub
import re#替换pattern = re.compile(r'(\w+) (\w+)')s = "hello 123,hello 456"s_list=pattern.findall(s)print(s_list)s_list=pattern.sub('hello world',s)print(s_list)/Library/Frameworks/Python.fra...原创 2018-05-09 15:33:43 · 4002 阅读 · 0 评论 -
Python3-正则表达式~pattern.中文
import re# title = 'hello , 你好,world!'# print(title)title = u'hello , 你好,world!'print(title)# pattern=re.compile(u'[\u4e00-\u9fa5]+')#unicode# s=pattern.findall(title)# print(s)#['你好']patt...原创 2018-05-09 15:35:08 · 1227 阅读 · 0 评论 -
Python3-正则表达式~贪婪模式与非贪婪模式
import restr1 = r'aa<div>test1</div>bb<div>test2</div>cc'str2 = r'aa<div>test1<div>test2</div></div>cc'#贪婪模式pattern=re.compile(r'<原创 2018-05-09 15:49:11 · 539 阅读 · 0 评论 -
Python3-正则表达式~爬取猫眼电影应用
import re,jsonfrom urllib import request#maoyan.com#1.获取网页内容base_url='http://maoyan.com/board'response=request.urlopen(base_url)html=response.read()html=html.decode('utf-8')#写入文件with open('m...原创 2018-05-09 18:04:30 · 582 阅读 · 0 评论 -
Python3-豆瓣电影影片差评和影片封面照片的爬取
#实现豆瓣电影影片差评和影片封面照片的爬取from urllib import requestimport jsonimport sslssl._create_default_https_context=ssl._create_unverified_context#接口列表url_list=[]for i in range(3): base_url = "https://...原创 2018-05-03 16:17:37 · 837 阅读 · 0 评论 -
Python3-爬虫~selenium\phantomjs报错处理selenium.common.exceptions.ElementNotVisibleException
意思是element是不可见的。所以无法获取到。这时候就遇到一个难题,怎么把element变成可见的呢?这时候,我们就用ActionChains来模拟效果ActionChains(driver).click(driver.find_element(By.ID, ‘g-hd-searchs‘)).perform() #使用perform()才能执行action 这个时候,你会惊奇地发现:下拉菜单成功...转载 2018-05-17 10:37:37 · 2217 阅读 · 1 评论 -
Python3-爬虫~selenium\phantomjs\ActionChains百度例子
#安装:pip install selenium=2.48.0#显示:pip show selenium#卸载:pip uninstall selenium#模拟用户行为import os,timefrom selenium import webdriver,commonimport seleniumfrom selenium.webdriver.common.action_cha...原创 2018-05-17 11:03:39 · 435 阅读 · 0 评论