python
dididada10
这个作者很懒,什么都没留下…
展开
-
多线程_生产者_消费者_锁Lock_Condition
import threadingimport randomimport datetime"""模拟3天的简易仓库存货和出货运营模式: 每天售卖电脑时检查电脑仓库存储量是否小于100,小于的话去进行补货,随机生成一个补货单; 大于等于100时,去进行售卖,随机生成用户订单,进行售卖。 每天营业结束时,需要统计一天售卖的总金额和总数量"""SAFETY_STOCK = 100 # 安全库存SALE_TIMES = 50 # 每天最大销售次数,超过就结束PRICE .原创 2021-07-04 20:50:33 · 140 阅读 · 0 评论 -
多线程Threading
# 传统方式执行 VS 多线程执行的区别:# 传统方式,顺序执行,比如下载图片,一次只能下载一张,等待网络返回的时间就浪费了,运行慢# 多线程,并行,同时下载多张图片,在等待网络返回的时间,去执行下载其他图片的操作,运行快,利用资源更高效# 传统import threadingimport timedef draw(): print("draw") time.sleep(0.5)def write(): print("write") time.sle.原创 2021-07-04 20:45:05 · 100 阅读 · 0 评论 -
多线程Threading 锁Lock
import threading"""如何解决多线程共享全局变量的问题?用锁,先获取锁:lock.acquire(),处理共享全局变量,释放锁:lock.release();另一个线程才能获取锁,处理全局变量注意:加锁,只加到必要的位置:改变全局变量的位置,没有的地方不加,比如打印等等加几把锁,看处理几个全局变量查看当前线程数: print(len(thread.enumerate())) 是数,所以用len()。thread.enumerate() 打印的是线程列表"""valu.原创 2021-07-04 20:42:07 · 282 阅读 · 0 评论 -
Python 垃圾回收
垃圾回收(Garbage Collection)1. 找到内存中无用的垃圾资源2. 清除这些垃圾并把内存让出来给其他对象使用。python中的垃圾回收:主要手段:引用计数辅助手段:标记清除和分代回收机制【引用计数】每个对象都有PyObject,当对象有新的引用,ob_refcnt 增加;当引用被删除,ob_refcnt 就减少;当引用计数=0, 该对象生命就结束了1. 导致引用计数+1的情况有哪些 对象被创建,被一个变量引用,赋值操作:a = 8 对象被另一个变量引用,原创 2021-06-06 20:07:28 · 146 阅读 · 0 评论 -
装饰器 闭包 nonlocal
# 装饰器 # 1 闭包# 概念,如果一个函数中,定义了另一个函数,且内函数使用了外函数的变量,那么里面的函数称为一个闭包def greet(name): print("outter") def say_hello(): print("%s 你好" % name) return say_helloif __name__ == '__main__': res = greet("didi") # outter # print(res) #原创 2021-05-23 23:50:39 · 108 阅读 · 0 评论 -
Python 异常
异常语法try: # 如果捕获到异常,后面的代码就不执行了 # 不要把大片代码放在一个try里,然后使用pass忽略掉所有错误 passexcept Exception as e: # except 必须有一个 passexcept (Exception1, Exception2) as e: # 一次处理多个异常,放在元组里 passexcept Exception as e: # all other exception pa原创 2021-04-05 15:05:04 · 211 阅读 · 1 评论 -
Leetcode200. 岛屿数量
200. 岛屿数量200. 岛屿数量给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例 1:输入:[['1','1','1','1','0'],['1','1','0','1','0'],['1','1','0','0','0'],['0','0','0','0','0']]输出: 1示例 2:输入:[['1'原创 2020-07-12 23:10:51 · 455 阅读 · 0 评论 -
Leetcode520. 检测大写字母
"""520. 检测大写字母给定一个单词,你需要判断单词的大写使用是否正确。我们定义,在以下情况时,单词的大写用法是正确的:全部字母都是大写,比如"USA"。单词中所有字母都不是大写,比如"leetcode"。如果单词不只含有一个字母,只有首字母大写, 比如 "Google"。否则,我们定义这个单词没有正确使用大写字母。示例 1:输入: "USA"输出: True示例 2:输入: "FlaG"输出: False注意: 输入是由大写和小写拉丁字母组成的非空单词。"""#.原创 2020-05-25 07:22:15 · 363 阅读 · 0 评论 -
Leetcode面试题17. 打印从1到最大的n位数
"""面试题17. 打印从1到最大的n位数输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。示例 1:输入: n = 1输出: [1,2,3,4,5,6,7,8,9]说明:用返回一个整数列表来代替打印n 为正整数分析:方法一:用range()时间复杂度:O(N)空间复杂度:O(N)"""class Solution: def printNumbers(self, n): "..原创 2020-05-24 21:21:27 · 184 阅读 · 0 评论 -
Leetcode面试题04. 二维数组中的查找
面试题04. 二维数组中的查找难度简单在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例:现有矩阵 matrix 如下:[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [18, 21, 23, 26,原创 2020-05-24 11:00:55 · 445 阅读 · 0 评论 -
Leetcode面试题58 - I. 翻转单词顺序
面试题58 - I. 翻转单词顺序难度简单输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. ",则输出"student. a am I"。示例 1:输入: "the sky is blue"输出:"blue is sky the"示例 2:输入: " hello world! "输出:"world! hello"解释: 输入字符串可以在前面或者后面包含多余的空格,...原创 2020-05-24 00:01:28 · 192 阅读 · 0 评论 -
Leetcode面试题58 - II. 左旋转字符串
面试题58 - II. 左旋转字符串难度简单字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。示例 1:输入: s = "abcdefg", k = 2输出:"cdefgab"示例 2:输入: s = "lrloseumgh", k = 6输出:"umghlrlose"限制:1 <= k < s.l..原创 2020-05-23 23:50:04 · 171 阅读 · 0 评论 -
Leetcode26. 删除排序数组中的重复项
# 20200520print("begin")"""26. 删除排序数组中的重复项难度简单给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用O(1)额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nums = [.原创 2020-05-21 06:50:23 · 367 阅读 · 0 评论 -
Leetcode35索引插入位置
# 20200520"""给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,5,6], 0输出: 0""""""审题:排序数组,无重复元素算法一:特例处理:如果数组为空,返回0.原创 2020-05-20 06:50:53 · 129 阅读 · 0 评论 -
Leetcode27最长公共前缀
# encoding=utf-8"""编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。示例 1:输入: ["flower","flow","flight"]输出: "fl"示例 2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。说明:所有输入只包含小写字母 a-z 。""""""算法:处理特例:列表为空首先按照字符串长度升序排列遍历第一个字符串的每个字符,如果后面的每个字符.原创 2020-05-20 06:21:34 · 123 阅读 · 0 评论 -
Leetcod面试题32 - III. 从上到下打印二叉树
from collections import deque"""面试题32 - III. 从上到下打印二叉树难度中等请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。例如:给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [20,9], [15,7].原创 2020-05-15 08:57:45 · 276 阅读 · 0 评论 -
Leetcode面试题32 - I. 从上到下打印二叉树
from collections import deque"""面试题32 - I. 从上到下打印二叉树难度中等12从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。例如:给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回:[3,9,20,15,7]提示:节点总数 <= 1000""""""算法流程:特例处理:当树的根节点为空,则直接返回空列表 [] ;.原创 2020-05-15 08:52:18 · 284 阅读 · 0 评论 -
Leetcode面试题32 - II. 从上到下打印二叉树 II
Leetcode面试题32 - II. 从上到下打印二叉树 II难度:简单19从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。例如:给定二叉树: [3,9,20,null,null,15,7],3/ \9 20/ \15 7返回其层次遍历结果:[ [3], [9,20], [15,7]]from queue import Queue# Definition for a binary tree node.class..原创 2020-05-14 07:13:35 · 147 阅读 · 0 评论 -
python 装饰器
"""装饰器定义:在执行一个功能A的基础上添加一个新功能AA,不破坏原功能A的代码并且可以复用,对A之外的很多功能B、C、D等等都可以是一个很著名的设计模式使用场景:经常被用于有切面需求的场景,如:添加日志、安全、事物等好处:把大量函数中与函数功能本身无关的代码抽离出来,实现复用"""# python装饰器decorator之计算函数运行时间的例子import...原创 2020-03-10 21:29:40 · 112 阅读 · 0 评论 -
leetcode1. 两数之和
给定一个整数数组 nums和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1]方法一:...原创 2020-03-02 20:19:01 · 111 阅读 · 0 评论 -
leetcode 263 判断给定的数是否为丑数。
leetcode 263 判断给定的数是否为丑数。编写一个程序判断给定的数是否为丑数。丑数就是只包含质因数 2, 3, 5 的正整数。示例 1:输入: 6输出: true解释: 6 = 2 × 3示例 2:输入: 8输出: true解释: 8 = 2 × 2 × 2示例 3:输入: 14输出: false解释: 14 不是丑数,因为它包...原创 2019-05-13 23:16:37 · 650 阅读 · 0 评论 -
Python 文件相关常用方法
文件相关方法,总结部分常用的,代码如下:# encoding=utf-8import os,shutil,randomfor tmpdir in ("D:/data/文件操作9wer", "/文件操作9wer"): if os.path.isdir(tmpdir): breakelse: print("no empty directory avail...原创 2019-04-17 22:29:40 · 161 阅读 · 0 评论 -
接口测试脚本
写了个简单的接口测试的脚本,实现的功能是:多个接口,多组参数值测试 打印url、输入参数、断言内容 断言正确就返回结果Pass,断言错误就返回结果Fail,最后统计通过和失败的用例数数据、程序分离,详情如下:程序:#encoding=utf-8# e5 多接口多参数组合# R 2018/11/2 23:22import requestsimport jsonimpo...原创 2018-11-02 23:53:38 · 8496 阅读 · 2 评论 -
多线程
例 18.4 import threadingfrom time import sleep,ctime loops = [4,2] def loop(nloop,nsec):print ('start loop', nloop, 'at:',ctime())sleep(nsec)print ('loop', nloop, 'done at:',ctime()...原创 2018-10-05 23:52:18 · 165 阅读 · 0 评论 -
Python -- 对象
Python 面向对象 object oriented , 一切都是对象对象把函数和数据收集在一起 1 真实世界中的对象属性 attribute 球的颜色、形状动作 action 捡球、抛球 2 Python中的对象属性 attribute: 对象的特征ball.colorball.sizeball.weight 显示: pri...原创 2018-07-30 21:59:10 · 477 阅读 · 1 评论 -
Python -- 函数
1、函数:函数,就是完成某个工作的代码块,用来构建更大程序的一个小部分,就像积木搭房子一样创建一个函数:# 定义一个函数def printMyAddress(): print ("Candy") print ("123 Street") print ("Ottawa,Ontario,Canada") print ("k 123") ...原创 2018-07-24 23:56:51 · 365 阅读 · 0 评论