
python应用
文章平均质量分 55
kobe_OKOK_
Python爱好者 曼巴精神践行者
展开
-
万字长文掌握Python高并发
高并发一直在软件开发遇到的老大难问题,软件承载并发的能力也是一个核心性能点之一,这篇文章主要讲解Python语言的高并发工具,主要包括多进程、多线程、协程等。同时聊聊python的全局解释器锁对多线程的影响。原创 2023-02-15 16:32:23 · 3728 阅读 · 1 评论 -
Pycharm无法加载文件 D:\Envs\py_venvs\venv_mall_py3.6\Scripts\activate.ps1,因为在此系统上禁止运行脚本
【代码】Pycharm无法加载文件 D:\Envs\py_venvs\venv_mall_py3.6\Scripts\activate.ps1,因为在此系统上禁止运行脚本。原创 2023-02-04 18:26:18 · 213 阅读 · 0 评论 -
Python虚拟环境大总结(virtualenv pipenv)
virtualenv命令的工具有一些不好用,virtualenvwrapper是对virtualenv的包装,能够很好的使用虚拟环境。如果配置了环境变量WORKON_HOME,那么默认创建在环境变量所在的路径中。设置环境变量值为PIPENV_VENV_IN_PROJECT=True。在当前目录下创建一个新的目录test1,这就是虚拟环境的目录。通过 -p 或者–python 参数指定python版本。workon venv_name(虚拟环境名)在当前目录中创建虚拟环境。指定python版本。原创 2023-02-01 16:54:31 · 1004 阅读 · 2 评论 -
时间戳和时间字符串互转
【代码】时间戳和时间字符串互转。原创 2022-12-09 19:00:03 · 114 阅读 · 0 评论 -
Python模块中的__all__列表属性表示什么?
一个xx.py文件就是一个python模块 module当一个xx.py中定义__all__属性的时候,会影响从模块导入公共变量。一个包含__init__.py文件的文件夹称为包 packagea.pyb.pyb.py原创 2022-12-07 09:42:29 · 226 阅读 · 0 评论 -
Python实用技巧-善用assert
assert是Python3中的一个关键字,用于对一个表达式进行“断言”,当表达式的结果为False时,抛出AeertError异常,当表达式结果为True时,继续执行后面的代码。assert用于判断程序是不是应该继续下去,如果有些环境问题或者其他的问题,可以直接结束程序,而不需要把程序执行结束后再报错,有利于提高效率,有问题早暴露。 比如一个程序只能在linux系统下运行,那么可以在程序的开头加上一个断言,如果不是就直接报错。用断言两种方式的输出方式一样断言一个表达式的结果,如果是True,那么原创 2022-06-17 09:17:18 · 470 阅读 · 0 评论 -
Python crypto模块实现RSA 加密解密
文章目录1 概述2 openssl工具生成RSA公钥私钥2.1 生成私钥2.2 生成公钥3 使用 Crypto 库3.1 安装库3.2 生成私钥和公钥3.3 公钥加密,私钥解密3.4 私钥制作签名,公钥验证签名1 概述RSA加密算法是一种非对称加密算法。RSA 是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。RSA就是他们三人姓氏开头字母拼在一起组成的 。RSA加密解密,需要一对秘钥,一个是私钥,原创 2022-05-23 13:54:25 · 3692 阅读 · 0 评论 -
腾讯云对象存储临时密钥qcloud-python-sts库安装失败解决办法
文章目录1问题描述2 解决方案2.1 下载源码包2.2 解压压缩包1问题描述PS E:\coding\projectmanager> pip install -U qcloud-python-stsLooking in indexes: https://pypi.tuna.tsinghua.edu.cn/simpleCollecting qcloud-python-sts Using cached https://pypi.tuna.tsinghua.edu.cn/packages/3a/原创 2022-05-18 09:13:37 · 1186 阅读 · 0 评论 -
Python生成随机图片验证码
1 环境准备pip install pillow 依赖pillow库2 基本使用2.1 创建图片from PIL import Imageimg = Image.new(mode='RGB', size=(120, 30), color=(255, 255, 255)) # 在图片查看器中打开# img.show() # 保存在本地with open('code.png','wb') as f: img.save(f,format='png')2.2 创建画笔,用于在原创 2022-05-06 09:01:32 · 457 阅读 · 0 评论 -
数据库连接池应用
环境pip install pymysql pip install dbutils 1 单线程测试import pymysqlfrom dbutils.pooled_db import PooledDBpool = PooledDB( creator=pymysql, maxconnections=6, blocking=True, ping=1, host='localhost', port=3306, user='root',原创 2022-04-06 13:52:16 · 990 阅读 · 0 评论 -
一文搞懂装饰器
1 最基础的装饰器def decorator(f): def inner(): print('before') res = f() print('after') return res return inner@decoratordef task1(): print('执行task1') return 'complete'task1() """before执行task1after"""2原创 2022-04-06 13:41:11 · 136 阅读 · 0 评论 -
pyinstaller自定义spec文件
pyi-makespec -w test.py, 就会先生成 test.spec(当前目录下)pyinstaller -F test.spec 生成test.exe# -*- mode: python ; coding: utf-8 -*-block_cipher = Nonea = Analysis(['app\\main.py'], pathex=[], binaries=[], datas=[('app/ap原创 2022-03-10 22:54:49 · 1245 阅读 · 0 评论 -
纯Python撸一个操作系统
文章目录1 引言2 实现多任务3 系统调用基类3.1 获取task id3.2 创建新任务3.3 kill 任务4 协程版web服务器1 引言最近在了解Python原生的协程机制,通过生成器来实现协程,我最终想要实现几个功能:第一:单进程、单线程的多任务处理第二:实现一些基本的系统调用第三:单进程、单线程实现一个多任务处理功能的web服务器2 实现多任务多任务可以通过多进程和多线程的方式很容易实现,但这个不是本篇文章的重点。本文章使用生成器实现多任务。Task类比较简单,初始化方法指定一个唯原创 2021-11-23 09:48:00 · 842 阅读 · 0 评论 -
深入剖析concurrent.futures
文章目录1 顺序同步下载2 concurrent.futures并发下载3 GIL、多核心CPU与进程池模拟一个故事,从百度图片上面随便找几张美女图片,下载下来,保存到本地,先按照顺序下载1 顺序同步下载import randomimport timeimport requestsurls = [ "https://t7.baidu.com/it/u=3676218341,3686214618&fm=193&f=GIF", "https://t7.baidu.原创 2021-11-08 16:24:14 · 646 阅读 · 1 评论 -
Python协程前奏-深度剖析yield、yield from
文章目录1 yield2 yield from3 通过yield实现简单的生产者消费者1 yield函数体中出现yield的关键字,这个函数调用就是一个生成器def gen(): print("generator start") x = yield 1 print("received x =",x) print(type(gen())) # <class 'generator'>一个生成器对象有多种状态,可以通过客户端代码与生成器对象原创 2021-11-08 14:03:02 · 499 阅读 · 0 评论 -
Python 多线程,多进程
文章目录1 线程2 进程3 协程1 线程2 进程3 协程原创 2021-11-07 10:06:29 · 260 阅读 · 0 评论 -
Python函数形参 * / *args **kwargs
Python中有很多奇怪的函数参数传递形式,尤其是在读源码的时候。函数形参有*args, **kwargsdef func1(*args, **kwargs): print(args) # (1, 2, 3) print(kwargs) # {'a': 1, 'b': 2}if __name__ == '__main__': func1(1, 2, 3, a=1, b=2)args是一个元组,接收所有的位置参数,kwargs是一个字典,接收所有的关键字参数。采用这原创 2021-11-06 13:58:17 · 162 阅读 · 0 评论 -
“云”上的modbus服务器
1 modbus server 脚本import timefrom modbus_tk import modbus_tcpimport modbus_tk.defines as mdfimport redisdef run_server(): r_c = None server = modbus_tcp.TcpServer(address='0.0.0.0') slave = server.add_slave(1) slave.add_block('ns', .原创 2021-10-28 16:14:28 · 582 阅读 · 0 评论 -
Python创建线程,停止线程(CAPI)
class T: def start_back_thread(self,func,*args): th = threading.Thread(target=func,args=args) th.start() return th.identdef task(): while True: print("hello") time.sleep(1)def task2(): while True:原创 2021-10-27 21:49:44 · 425 阅读 · 0 评论 -
基于epoll实现web服务器
文章目录1 引言2 实现epoll版本的多任务服务器1 引言常用的多任务方式有进程,线程,协程,还有一种方式就是单进程,单线程下也能够实现多任务,这就是IO多路复用技术,epoll是Linux系统实现多任务的方式。nginx底层就是使用epoll实现的。操作系统独有的内存空间不允许其他应用程序使用,这就是操作系统的内核态;应用程序使用的内存空间是用户态,用户态与内核态是两个没有交集的集合。epoll高效率的原因是有一段内存空间是操作系统内核与应用程序共有的,使得操作系统不必从用户态与内核态之间相原创 2021-10-26 09:41:57 · 1310 阅读 · 0 评论 -
Python检测全局字典变化
import randomimport timefrom threading import Threadd = dict(A=0, B=0)def detect(d1: dict): d2 = d1.copy() flag = False while True: d1_keys = d1.keys() d2_keys = d2.keys() if _ := d1_keys - d2_keys: f原创 2021-10-15 10:48:34 · 558 阅读 · 0 评论 -
Python通过OPCUA与WinCC数据交互
文章目录from opcua import Clientdef browse(root,level=0): if root.get_node_class().name == 'Object': print('--'*level+root.get_browse_name().Name) level += 1 for child in list(set(root.get_children())): if child原创 2021-09-20 23:16:53 · 1907 阅读 · 1 评论 -
Python-logging库使用详解
logging模块是很有用的,可以作为程序的输出使用import logging# 第一步,创建一个loggerlogger = logging.getLogger() logger.setLevel(logging.INFO) # Log等级总开关# 第二步,创建一个handler,用于写入日志文件logfile = './log.txt'fh = logging.FileHandler(logfile, mode='a') # mode表示文件的打开方式fh.setLevel(lo原创 2021-08-30 10:15:49 · 309 阅读 · 1 评论 -
Python-GUI-wxpython简介
1 GUI(Graphical User Interface) 图形用户界面1.1 创建应用程序两个基本对象应用程序对象:管理主事件循坏,是wxpython的动力,如果没有,wxpython将不能执行顶级窗口对象:用于管理最重要的数据,控制并呈现给客户1.1.1 创建一个wx.App的子类定义这个子类在定义的子类中写一个OnInit()初始化方法在程序的主要部分创建这个类的一个实例调用应用程序的MainLoop()方法。这个方法将程序的控制权转交给wxpython'''原创 2021-08-29 11:39:54 · 251 阅读 · 0 评论 -
Beautifulsoup4 详解
文章目录1 安装2 使用详解(标签)2.1 解析库2.2 基本使用2.3 标签选择器2.4 获取名称2.5 获取属性2.6 获取内容2.7 嵌套选择2.8 子节点和子孙节点2.9 获取父节点和祖先节点2.10 获取兄弟节点3 标准选择器3.1 find_all()方法3.1.1 根据name查找(name-标签名)3.1.2 根据attrs查找(attrs-属性)3.1.3 根据text查找 (text-文本)3.2 find()方法4 CSS选择器4.1 获取属性4.2 获取内容4,3 通过标签来查找4原创 2021-08-29 11:25:26 · 2232 阅读 · 1 评论 -
Python实现OPC UA
FreeOpcUa,是使用Python开发基于OPC统一架构的优选第三方库,项目链接:https://github.com/FreeOpcUa/python-opcua创建一个OPC服务器的步骤非常简单:from opcua import Serverserver = Server() # 实例化一个UA服务器server.set_endpoint("opc.tcp://0.0.0.0:48400/freeopcua/server/") # 设定服务器URIserver.start(转载 2021-08-29 11:01:15 · 9099 阅读 · 4 评论 -
Python-内置函数-property
使用场景一class Test: def __init__(self): self._x = None def getx(self): print(f'{__class__}-{sys._getframe().f_code.co_name}开始执行') return self._x def setx(self, value): print(f'{__class__}-{sys._getframe().f_cod.原创 2021-08-07 22:20:10 · 146 阅读 · 0 评论 -
Python-内置函数
文章目录a...abs(_x_)all(_iterable_)any(_iterable_)ascii(_object_)b...bin(_x_)bool(_x_)breakpoint()bytearray()bytes()c...callable()classmethod()compile()complex()d...delattr(_object_,_name_)dir()dict()divmod()e...enumerate(_iterable_,_start_)eval(_expression_[,原创 2021-08-06 23:24:08 · 320 阅读 · 0 评论 -
Python数据处理-字典列表 转换
v = [{'id': 1, 'tname': '张老师', 'cname': '二班'}, {'id': 1, 'tname': '张老师', 'cname': '三班'}, {'id': 2, 'tname': '赵老师', 'cname': '二班'}, {'id': 2, 'tname': '赵老师', 'cname': '三班'}, {'id': 3, 'tname': '王老师', 'cname': '三班'}, {'id': 3, 'tname原创 2021-06-02 22:08:07 · 196 阅读 · 0 评论 -
WinCC工业数据桥要花钱?自己撸一个
文章目录1 Readme2 软件环境2.1 环境介绍2.1 配置sqlserver2.2 运行1 Readme为啥开发这个小应用?数据资产越来越重要,很多生产数据都被归档到WinCC的历史数据库中,数据在归档过程中是压缩存储的,压缩后的数据可以通过工业数据桥组态的方式导出来,还可以通过oledb接口通过脚本的方式导出来。本应用纯属业余爱好,不可用于商业项目中目前是V1.0版本,后面会根据心情进行迭代更新,暂时计划V1.1 : 增加对mysql数据的写入V1.2 : 增加一些客户端,计划加入mod原创 2021-05-18 14:25:03 · 1648 阅读 · 5 评论 -
Python迭代器、生成器、装饰器
文章目录1 迭代器2 生成器3 装饰器3.1 闭包3.2 使用例子详细说明闭包1 迭代器2 生成器3 装饰器装饰器首先要学的是闭包3.1 闭包def out_func(data): def inner_func(): msg = "hello" print(f"{msg}-{data}") return inner_func闭包的两个条件:外部函数返回内部函数内部函数使用外部函数作用域内的变量3.2 使用例子详细说明闭包...原创 2021-05-16 13:57:20 · 164 阅读 · 0 评论 -
python内置模块系列-sys、os
文章目录1 sys模块1.1 基础用法1.2 用的比较多的2 os模块2.1 基础用法1 sys模块1.1 基础用法sys模块主要是针对与Python解释器相关的变量和方法,不是主机操作系统。sys.argv #获取命令行参数列表,第一个元素是程序本身sys.exit(n) #退出Python程序,exit(0)表示正常退出。当参数非0时,会引发一个SystemExit异常,可以在程序中捕获该异常sys.version #获取Python解释程器的版本信息sys.maxsize #最大的原创 2021-05-15 20:19:50 · 149 阅读 · 0 评论 -
python魔法方法浅析
python-魔法方法文章目录python-魔法方法1 前言2 预热3 正题3.1 实例化3.2 格式输出类3.3 设置属性3.4 运算&迭代3.5 上下文管理未完待续1 前言为什么python会有那么多的爱好者,和追捧者,分几个层面讲,在应用层面,python有300,585个项目,python除了不能给你生孩子,其他的什么都可以做,而且你都能找到相关的包,不必重复造轮子,拿来即用;在开发者层面,python做了很好的封装的同时又兼具开放性,我们可以通过魔法方法设计自己的类,让自己的类原创 2021-04-22 15:35:11 · 147 阅读 · 0 评论 -
Python环境
Python环境文章目录Python环境1 下载2 安装2.1 Windows安装2.2 Linux安装3 更换PIP源3.1 windows更换pip源3.2 linux更换pip源4 虚拟环境4.1 Windows虚拟环境4.1.1 virtualenv+pip4.1.2 pipenv4.2 Linux虚拟环境4.1.1 virtualenv+pip4.1.2 pipenv5 IDE jupyter-notebook5.1 安装jupyter5.2 启动jupyter5. 3 配置代码自动补全5 ID原创 2021-04-20 01:19:55 · 212 阅读 · 2 评论 -
pandas -agg函数学习笔记
导包 模拟数据import numpy as npimport pandas as pddatas = {‘class_’:[“a1”,“a1”,‘a1’,‘a2’,‘a2’,‘a2’,‘a3’,‘a3’,‘a3’,‘a4’,‘a4’,‘a4’],‘height’:np.random.randint(1,100,12).tolist(),‘age’:np.random.randint(1,180,12).tolist(),‘weight’:np.random.randint(1,100,12)原创 2021-02-25 18:03:07 · 496 阅读 · 0 评论 -
plc寄存器地址映射到腾讯云redis
通过仿真redis修改&读取plc内部寄存器的状态# --*--coding:utf-8--*--import timefrom redis import StrictRedisimport snap7from threading import Threadimport loggingfrom struct import pack, unpackclass MemoryMap(object): """ A class from plc memory to redis "原创 2020-12-16 14:19:27 · 555 阅读 · 0 评论 -
python-socket与1500PLC通讯
15000PLCsocket通讯1 使用PLCSIM ADVANCE 软件搭建西门子PLC仿真环境2、建立TCP连接程序段,开放式用户通讯可以作为客户端,也可以作为服务器,本例中使用的是服务器。通讯参数配置,IP地址与端口是TCP通讯的关键参数。`import socketfrom threading import Thread as tdimport timeimport structserver = socket.socket(socket.AF_INET,socket.SO原创 2020-06-18 17:36:35 · 3228 阅读 · 4 评论