python入门到精通

1、Python多线程

import threading
import time

def run(n):
    print("task", n)
    time.sleep(10)
 
if __name__ == '__main__':
//特别注意:不能写成threading.Thread(target=run("t1")),否则还是单线程
    t1 = threading.Thread(target=run, args=("t1",))
    t2 = threading.Thread(target=run, args=("t2",))
    t1.start()
    t2.start()
===============================
Python多线程写法

def countrow(currentday):
    print(currentday)

for date in date_list:
    while True:
        thread_count = len(threading.enumerate())
        if thread_count < 5:
            # t = threading.Thread(target=countrow("多线程")) 这样子并不会起多线程
			t = threading.Thread(target=self.countrow,  args=(date, "11"))  #不能只传1一个参数,否则报错:”countrow() argument after * must be an iterable, not datetime.datetime“

            t.start()
            break
        else:
            time.sleep(5)

2、pip是常用的python包管理工具,类似于java的maven
3、docker

  • 1)Docker 在容器的基础上,进行了进一步封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护。使得 Docker技术比虚拟机技术更为轻便、快捷
  • 2)Docker 包括三个基本概念 ● 镜像(Image) ● 容器(Container) ●仓库(Repository) 仓库就是装存储镜像的地方
  • 3)镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等
  • 4)将flask应用部署在docker中
    * 创建requirements.txt, Dockerfile
    * docker build -t “cv2es” .
    * docker run -it --rm -p 8888:8888 cv2es

4、Python有五个标准的数据类型:
● Numbers(数字)
● String(字符串)
截取子字符串:str=“laojingyao”;
name=str[0:3]
name2 = str[3:] #从第三位开始截到最后一位
● List(列表)
用[]标识。有序。不管是list还是string,从左到右索引默认 0 开始,从右到左索引默认 -1 开始
创建一个list: lst = list()或者lst = []
● Tuple(元组)
元组用"()"标识。内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表。
● Dictionary(字典)
K-V形式,即json
5、三引号’’’
如果一个字符串有很多特殊字符,一个一个转义是十分麻烦的。用三引号引起来,可以保证所见即所得,不需要加转义字符
6、python的dict其实就是json,如果想要转换dict和json字符串,用json包的下面的方法:

	1)json.dumps(dict)	将dict转换为json字符串
	2)  json.loads(json)	将json字符串转换为dict
	dict取值的两种方式:
	1)dict.get("foo")		//如果key不存在,不会报错,返回None
	2)  dict["foo"]			//如果key不存在,会报错

7、def init(self):
相当于java的构造函数,在初始化类的时候会默认执行的方法。可传参数,也可不传
8、python读取大文件

with open(path) as f:
    #文件对象f视为一个迭代器,会自动的采用缓冲IO和内存管理
    for line in f:
	每行操作

9、python yield
顺序访问容器内的前 5 个元素,可以有两种做法:
● 获取容器内的所有元素,然后取出前 5 个;
● 从头开始,逐个迭代容器内的元素,迭代 5 个元素之后停止。
显而易见,如果容器内的元素数量非常多(比如有 10 ** 8 个),那么后一种方案能节省巨大的时间、空间开销。
1)带有 yield 的函数不再是一个普通函数,而是一个生成器generator,可用于迭代,工作原理同上。
2)yield就是 return 返回一个值,并且记住这个返回的位置,下次迭代就从这个位置后(下一行)开始
10、sys.path.append(os.path.abspath("."))
将当前脚本的运行路径设置为主目录,比如运行主目录下的/bin/app.py,然后在app.py里面会import 目录fpBaseMongo下的fp2mongo.py,那么fp2mongo.py默认的运行路径为"主目录/bin", 通过sys.path.append(os.path.abspath("."))将fp2mongo.py运行路径统一为主目录,防止错乱
11、type为python的保留字,程序里面变量的定义一定不要声明为type!!!否则,如果你使用type()函数判断某个变量的类型时,会出错

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值