python3
ailinyingai
DevOps 搬砖人 干饭人
展开
-
简单的分布式
from multiprocessing.managers import BaseManagerhost = '127.0.0.1'port = 9030authkey = 'secret'shared_list = []class RemoteManager(BaseManager): passRemoteManager.register('get_list', callable=lambda: shared_list)mgr = RemoteManager(addres翻译 2021-09-08 18:08:22 · 94 阅读 · 0 评论 -
装饰器python3 2021
# The decorator to make it bolddef makebold(fn): # The new function the decorator returns def wrapper(): # Insertion of some code before and after return "<b>" + fn() + "</b>" return wrapper# The decorator to make原创 2021-08-26 16:43:17 · 85 阅读 · 0 评论 -
2021-08-26 装饰器
from functools import wrapsdef makebold(fn): @wraps(fn) def wrapper(*args, **kwargs): return "<b>" + fn(*args, **kwargs) + "</b>" return wrapperdef makeitalic(fn): @wraps(fn) def wrapper(*args, **kwargs):原创 2021-08-26 16:32:06 · 87 阅读 · 0 评论 -
2021-08-25 py协程
# 代码片段1#一个协程执行流程被打断的最主要的原因就是在协程内部调用了另一个协程函数import asyncioimport asyncio.coroutinesdef _set_result_unless_cancelled(fut, result): if fut.cancelled(): return print("this is a rewrited sleep callback function") fut.set_result(result)原创 2021-08-25 16:10:27 · 121 阅读 · 0 评论 -
冒泡排序以及其改进
def bubble_sort(alist): count = 0 for j in range(0,len(alist) - 1):#整个数列排序循环 for i in range(0,len(alist) - 1 - j): # 元素从头走到尾,走完一次,排好一个数 if alist[i] > alist[i + 1]: #因为要和下一个数相比,所以i只需要走到len(alist) -.翻译 2021-08-19 19:34:13 · 105 阅读 · 0 评论 -
listview
from PyQt5.QtWidgets import QApplication, QWidget , QVBoxLayout , QListView, QMessageBoxfrom PyQt5.QtCore import QStringListModel import sys class ListViewDemo(QWidget): def __init__(self, parent=None): super(ListViewDemo, self).__init__(parent) s翻译 2021-05-05 10:25:25 · 90 阅读 · 0 评论 -
pyside6 treewidget
def addTopLevelItem (item)def addTopLevelItems (items)def clear ()def closePersistentEditor (item[, column=0])def collapseItem (item)def columnCount ()def currentColumn ()def currentItem ()def currentItemChanged (current, previous)def edi翻译 2021-05-05 10:02:18 · 380 阅读 · 0 评论 -
Python SQLAlchemy demo
"""Create 操作"""from faker import Factoryfrom sqlalchemy import create_engine, Column, Integer, Stringfrom sqlalchemy.ext.declarative import declarative_basefrom sqlalchemy.orm import sessionmakerfaker = Factory.create()engine = create_engine('m.翻译 2021-05-04 18:24:51 · 322 阅读 · 0 评论 -
py属性小结对比
class Timer: def __init__(self, value = 0.0): # 1. 将变量加"_",标志这是私有成员 self._time = value self._unit = 's' def get_time(self): return str(self._time) + ' ' + self._unit def set_time(self, value): if(value < 0): raise V原创 2021-04-24 22:43:30 · 85 阅读 · 0 评论 -
布隆过滤器
import mmh3from bitarray import bitarrayclass BloomFilter: def __init__(self, size, hash_num): self.size = size self.hash_num = hash_num self.bit_array = bitarray(size) self.bit_array.setall(0) def add(self, s):原创 2021-03-10 17:56:52 · 138 阅读 · 0 评论 -
协程
这个补丁是Gevent模块最需要注意的问题,有了它,才会让Gevent模块发挥它的作用。我们往往使用Gevent是为了实现网络通信的高并发,但是,Gevent直接修改标准库里面大部分的阻塞式系统调用,包括socket、ssl、threading和 select等模块,而变为协作式运行。但是我们无法保证你在复杂的生产环境中有哪些地方使用这些标准库会由于打了补丁而出现奇怪的问题。一种方法是使用gevent下的socket模块,我们可以通过”from gevent import socket”来导入。不过更常用原创 2021-02-07 21:18:52 · 85 阅读 · 0 评论 -
足球队 循环赛制
from collections import dequeimport randomdef build_schedule(_teamarr): scheduleobj = dict.fromkeys(range(1,20)) fixpos = _teamarr[0] ring = _teamarr[1:] ring = deque(ring) #前半赛程,1-19轮(round) for round in range(1,20): #第1支翻译 2021-01-17 19:38:15 · 700 阅读 · 0 评论 -
m1---python
折腾几个小时…总结一下, 给后来人留个脚印.提示: brew+pyenv 请通过 Rosetta2 安装及运行.饶坑 开始安装:arch -x86_64 /bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)”之后每次运行都需要通过 arch 命令执行 brew, 如果觉得麻烦. 在 .zshrc 添加:alias ibrew=“arch -x86_64 brew”翻译 2020-12-26 11:48:59 · 564 阅读 · 0 评论 -
自定义上下文管理器
import osimport subprocessimport datetimeclass CustomFile(object):"""自定义一个上下文 文件类""" def __init__(self, file_name, file_model, *args, **kwargs): self.file_name = file_name self.file_model = file_model def __enter__(self, *args, **kwargs): se翻译 2020-12-16 14:42:28 · 156 阅读 · 0 评论 -
python内存分配的问题
众所周知,计算机硬件资源由操作系统负责管理,内存资源也不例外。应用程序通过 系统调用 向操作系统申请内存,而 C 库函数则进一步将系统调用封装成通用的 内存分配器 ,并提供了 malloc 系列函数。C 库函数实现的通用目的内存管理器是一个重要的分水岭,即内存管理层次中的 第 0 层 。此层之上是应用程序自己的内存管理,此层之下则是隐藏在冰山下方的操作系统部分。操作系统内部是一个基于页表的虚拟内存管理器 (第 - 1 层),以 页 ( page ) 为单位管理内存,CPU 内存管理单元 ( MMU )翻译 2020-12-05 14:53:12 · 279 阅读 · 0 评论 -
python3取两位小数
1)通过上面的函数,看着是不是很晕,感觉round(x,n)函数是否进位也没看出是啥规律(2)round(x,n)函数中,是否进位或四舍五入,取决于n位以及n+1位小数的值(3)只有当n+1位数字是5的时候,容易混淆,如果n为偶数,则n+1位数是5,则进位,例如round(1.23456,3)最终变为1.235(4)如果n为奇数,则n+1位是数5,那不进位,例如round(2.355,2),最终为2.35(5)如果n为0,即没有填写n的时候,最终结果与上面相反,即整数部分为偶数的时候,小数位5不进位翻译 2020-11-27 22:39:04 · 2440 阅读 · 0 评论 -
django 2.2 新特性
新特性约束新的CheckConstraint和UniqueConstraint类现在开始支持自定义数据库约束,通过使用Meta.constraints选项。小特性django.contrib.admin为TabularInline添加了列头的CSS类django.contrib.authHttpRequest将被作为第一个位置参数传递给RemoteUserBackend.co...原创 2020-03-18 10:21:09 · 374 阅读 · 0 评论 -
异步场景
假设一个场景:A,B,C,D…等等无数个人需要排队发邮件,邮件数量也不是固定的,会不断的增加想要给每个人都排个队,A 的单独一个队列发送,B 的单独一个队列发送,C 单独一个队列发送…发完不占用 worker。换句话说,A 的每次在 worker 中只有一封邮件在发送,发完取 A 的下一封。B,C,D…同理worker 数等于可以同时处理的人数目前找到的方案是 celery 的 chai...原创 2020-02-29 13:37:16 · 445 阅读 · 0 评论 -
py总结
浅copy:会在内存中新开辟一个空间,存放这个copy的列表,但是列表里面的内容还是沿用之前对象的内存地址。注意:切片中,如果是全切,属于浅copy。深copy:会在内存中开辟新空间,将原列表以及列表里面的可变数据类型重新创建一份,不可变数据类型则沿用之前的。类装饰器...原创 2020-02-29 09:06:15 · 178 阅读 · 0 评论 -
状态码列表
200ok201204no content206部分内容301永久重定向302found 临时性重定向303see other304not modified307临时重定向400bad request401未认证403拒绝404not found...原创 2020-02-28 14:15:44 · 140 阅读 · 0 评论 -
深入
技术栈的宽广,前端、后端、移动端、爬虫、啥都会点皮毛,成了所谓的"全干工程师",但小公司没能扛过互联网的寒冬,相继倒闭了,现在想面试大点的公司,求一份稳定。但是第一、学历就死在了很多 HR 的第一关,学历不高专业还不对口。第二、大点的公司都不需要所谓的"全干"工程师。不管我的任何技术栈,被深问一些基础原理之类的,都回答不上,以前觉得前端就是画界面对接口,后端就是对着数据库 curd,我所有技...原创 2020-02-27 14:40:14 · 162 阅读 · 0 评论 -
activeMQ
用 python 构造 Json 格式数据发往 activemq 时,根据网上教程,发送过去的信息总是提示 Json 格式错误,谷歌百度了半天,才找到一篇文章,发现是创建连接时候有个参数需要定义.默认的如下conn = stomp.Connection10([(“10.10.10.10”, 61613)])实际需要conn = stomp.Connection10([(“10.10.19....翻译 2020-02-27 13:37:20 · 143 阅读 · 0 评论 -
python trick
unicodedata combing 函数对迭代器进行切片跳过可迭代对象的开始仅支持关键字参数的函数创建支持with语句的对象slots 节省内存限制cpu和内存使用量控制可以import的内容比较运算符的简便方法使用slice 函数命名切片在运行时输出用户名 密码查找单词字符串的相近匹配使用ip地址在shell 中调试程序崩溃在一个类中定义多个构造函数使用装饰器缓...原创 2020-02-26 15:01:04 · 143 阅读 · 0 评论 -
爬虫三个点
(1)获取网页就是给一个网址发送请求,该网址会返回整个网页的数据。类似于在浏览器中键入网址并按回车键,然后可以看到网站的整个页面。(2)解析网页就是从整个网页的数据中提取想要的数据。类似于你在页面中想找到产品的价格,价格就是你要提取的数据。(3)存储数据也很容易理解,就是把数据存储下来。我们可以存储在csv中,也可以存储在数据库中。三个流程的技术实现下面列出三个流程的技术实现,括号里是对应...原创 2020-02-25 15:39:16 · 205 阅读 · 0 评论 -
布隆过滤器
标准的布隆过滤器>>> import bloompy>>> bf = bloompy.BloomFilter(error_rate=0.001,element_num=10**3)# 查询元素是否在过滤器里返回状态标识# 如果不在里面则插入,返回False表示元素不在过滤器里>>> bf.add(1) False>>...原创 2020-02-19 10:26:24 · 189 阅读 · 0 评论 -
布隆过滤器
import mathimport copyimport mmh3import hashlibfrom cmath import log#need to install bitarray: pip install bitarrayfrom bitarray import bitarrayfrom struct import unpack, packname = 'bloomp...原创 2020-02-19 10:11:08 · 158 阅读 · 0 评论 -
epoll
select,poll,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的,而异步I/O则无需自己负责进行读写,异步I/O的实现会负责把数据从内核拷贝到用...原创 2020-02-18 15:42:07 · 131 阅读 · 0 评论 -
线程、进程、协程
需要先对 IO 的概念有一定的认识: IO在计算机中指Input/Output,也就是输入和输出。并发与并行并发:在操作系统中,某一时间段,几个程序在同一个CPU上运行,但在任意一个时间点上,只有一个程序在CPU上运行。当有多个线程时,如果系统只有一个CPU,那么CPU不可能真正同时进行多个线程,CPU的运行时间会被划分成若干个时间段,每个时间段分配给各个线程去执行,一个时间段里某个线程运行...原创 2020-02-18 10:37:20 · 128 阅读 · 0 评论 -
0214文档
https://segmentfault.com/a/1190000011723728原创 2020-02-14 17:58:50 · 137 阅读 · 0 评论 -
scrapy 000
引擎打开一个网站(open a domain),找到处理该网站的Spider并向该spider请求第一个要爬取的URL(s)。引擎从Spider中获取到第一个要爬取的URL并在调度器(Scheduler)以Request调度。引擎向调度器请求下一个要爬取的URL。调度器返回下一个要爬取的URL给引擎,引擎将URL通过下载中间件(请求(request)方向)转发给下载器(Downloader)...原创 2020-02-03 08:57:28 · 248 阅读 · 0 评论 -
fizzbuzz
def fizzBuzz(n): return ['Fizz' * (not i % 3) + 'Buzz' * (not i % 5) or str(i) for i in range(1, n+1)]print(fizzBuzz(30))原创 2020-01-21 18:00:13 · 224 阅读 · 0 评论 -
文档
https://nicksors.cc/page/2/原创 2020-01-20 13:38:16 · 136 阅读 · 0 评论 -
异步爬虫
import asyncioimport aiohttpasync def run(url):print(“开始执行爬虫…”,url)async with aiohttp.ClientSession() as session:async with session.get(url) as resp:print(resp.url)url_list = [“https://www.baid...原创 2020-01-20 10:07:24 · 124 阅读 · 0 评论 -
facebook hydra
在2019年末,我们发布了Hydra,该框架通过允许开发人员通过编写和覆盖配置来简化Python应用程序的开发。借助Hydra,开发人员可以通过更改配置文件来更改产品的行为方式,而不是通过更改代码来适应新的用例。...原创 2020-01-18 14:09:44 · 434 阅读 · 0 评论 -
霍夫曼编码
from heapq import heappush, heappop, heapifyfrom collections import defaultdict def HuffmanEncode(characterFrequency): """Huffman encode the given dict mapping symbols to weights""" heap = ...转载 2020-01-17 14:01:11 · 581 阅读 · 2 评论 -
airflow
airflow 是一个编排、调度和监控workflow的平台,由Airbnb开源,现在在Apache Software Foundation 孵化。airflow 将workflow编排为由tasks组成的DAGs(有向无环图),调度器在一组workers上按照指定的依赖关系执行tasks。同时,airflow 提供了丰富的命令行工具和简单易用的用户界面以便用户查看和操作,并且airflow提供了...原创 2020-01-17 09:57:14 · 504 阅读 · 0 评论 -
salt命令
1:显示被控主机的操作系统类型salt ‘*’ grains.item os2:远程代码执行测试salt ‘*’ cmd.exec_code python ‘import sys; print sys.version’3.显示minion的在线状态salt-run manage.upsalt-run manage.down #查看死掉的minion调用脚本命令在远程主机上执行s...原创 2020-01-16 15:11:35 · 328 阅读 · 0 评论 -
python3特性
user = "Jane Doe"action = "buy"log_message = f'User {user} has logged in and did an action {action}.'print(log_message)# User Jane Doe has logged in and did an action buy.from pathlib import Pa...原创 2020-01-16 14:49:43 · 108 阅读 · 0 评论 -
re
零宽断言(?=exp) 也叫零宽度正预测先行断言,它断言自身出现的位置的后面能匹配表达式 exp。比如 \b\w+(?=ing\b),匹配以 ing 结尾的单词的前面部分(除了 ing 以外的部分)。如查找 I’m singing,它会匹配 sing。(?<=exp) 也叫零宽度正回顾后发断言,它断言自身出现的位置的前面能匹配表达式 exp 。例如 (?<=\bre)\w+\b 会...原创 2020-01-16 14:22:21 · 401 阅读 · 0 评论 -
py and go
倒序删除 因为列表总是‘向前移’,所以可以倒序遍历,即使后面的元素被修改了,还没有被遍历的元素和其坐标还是保持不变的a=[1,2,3,4,5,6,7,8]print(id(a))for i in range(len(a)-1,-1,-1): if a[i]>5: pass else: a.remove(a[i])print(id(a))...翻译 2020-01-15 15:15:27 · 167 阅读 · 0 评论