当前位置: 首页 > news >正文

python常见问题详解

Python
python 没有多态,而是鸭子类型
多继承,没有接口,可通过语法糖实现接口的作用
lambda中只能有一句
"/"表示之前的参数是必须是位置参数,”**“表示是后面的必须是关键字参数

Python多进程

在这里插入图片描述

Python 多线程是伪多线程

多线程子线程会随着主线程结束而中断,因此一般在主线程中调用thread.join()

线程方法

import threading t = thread.Thread() t.start(); # 没有返回值,若需要返回值可继承该类,在类中保存计算结果,用以获取 # 或者传入全局结果参数,
import thread # threading 封装了thread
import threadpool # 三方库

import threading
t = thread.Thread()
t.start();
# 没有返回值,若需要返回值可继承该类,在类中保存计算结果,用以获取
# 或者传入全局结果参数,
import thread # threading 封装了thread
import threadpool # 三方库
# 线程池
import asyncio
async def coro(i):print("core start",i)ret = await get(i) # 此处为耗时的io等操作print("core end",i)return ret
async def get(i):await asyncio.sleep(5)return i
loop = asyncio.get_event_loop()
a = [asyncio.ensure_future(coro(i)) for i in range(10)]
loop.run_until_complete(asyncio.wait(a))
loop.close()
print([i.result() for i in a])import concurrent.futures
with concurrent.futures.ThreadPoolExecutor() as pool:results = pool.map(function,args)   # 注意此处是任务提一提交完,args为参数列表的列表# result 线程的结果# 或者future = pool.submit(function,args)  # 每次提交一个future.result() # 结果for futures in futures: # 顺序执行xxxxfor futures in concurrent.futures.as_completed(futures): # 不会按照顺序执行,那个线程先结束先执行那个xxxx

Python协程

单线程的IO多路复用,使用了单线程中IO阻塞的那一段时间,但其实还是顺序执行,按照IO阻塞切换,因此不会出现协程安全问题,可以说是异步操作,开销小,切换容易。

在这里插入图片描述

GIL锁:全局解释器锁,Cython

cpu计算时线程需要获取GIL锁,只有一个,因此多核cpu也只有一个线程可以执行,主要防止多线程垃圾回收不安全

GIL只保证有一个线程运行,但不保证线程何时切换,因此还有线程安全问题。

程序代码现线程安全问题还是要加LOCK

import threading
lock = threading.Lock()
lock.acquire()
lock.release()
# 或者
with lock:xxxx 

执行IO操作时会释放锁,因此对于IO密集型任务,可以用多线程,计算密集型,不能发挥多核,多线程作用。

引用计数法+循环检测:GC

面向对象

类中的变量是静态变量,方法通过@staticmethod修饰,是静态,self.xxx=yy 实例变量

WWW

import urllib.request
if __name__ == '__main__':data = urllib.parse.urlencode({'wd':'python'}).encode("utf8")request = urllib.request.urlopen("http://baidu.com",data=data)with request:msg,hd = request.read(),request.info()print(msg)print(hd)

SMTP

# smtplib email 配合使用
# 或是unix系统中的sendmail命令

SOCKET

# 旧版本异步通信
import asyncore
class HTTPClient(asyncore.dispatcher):def __init__(self,host):#  初始化父类asyncore.dispatcher.__init__(self)# 创建一个socket对象self.create_socket()# 连接服务器端self.connect((host,80))#发送优化self.buffer = b'GET /HTTP/1.1\r\nHost: www.baidu.com\r\n\r\n'def handle_connect(self):print('服务器连接成功')def handle_close(self):print('服务器连接断开')self.close()def readable(self):return Truedef handle_read(self):# 指定一次读取1024个字节,如果一次没有读完的话,那么事件循环会分多次把内容读完为止print(self.recv(1024).decode())def writable(self):return (len(self.buffer)>0)def handle_write(self):sent = self.send(self.buffer)self.buffer = self.buffer[sent:]
if __name__ == '__main__':HTTPClient('www.baidu.com')asyncore.loop()import asyncore
import socketclass EchoHandler(asyncore.dispatcher_with_send):def handle_read(self):data = self.recv(8192)if data:self.send("hello".encode('utf8')+data)
class EchoServer(asyncore.dispatcher):def __init__(self, host, port):asyncore.dispatcher.__init__(self)self.create_socket(socket.AF_INET, socket.SOCK_STREAM)self.set_reuse_addr()self.bind((host, port))self.listen(5)def handle_accept(self):pair = self.accept()if pair is not None:sock, addr = pairprint('Incoming connection from %s' % repr(addr))handler = EchoHandler(sock)
if __name__ == '__main__':server = EchoServer('10.101.33.82', 8080)asyncore.loop()
import asyncio
async def handle_echo(reader, writer):while True:data = await reader.read(100)message = data.decode("gbk")addr = writer.get_extra_info('peername')print(f"Received {message!r} from {addr!r}")if message == '-1':writer.write("将会结束!".encode("gbk"))else:writer.write(message.encode("gbk"))await writer.drain()if message == '-1':writer.close()break
async def main():server = await asyncio.start_server(handle_echo, '10.101.33.82', 8080)addr = server.sockets[0].getsockname()print(f'Serving on {addr}')async with server:await server.serve_forever()asyncio.run(main())

编码

# 编码,utf8
#3字节 1110xxxx 10xxxxxx 10xxxxxx   中文:"中"
# utf8--> 4e2d -》0100 1110 0010 1101
b'\xe4\xb8\xad'.decode('utf8') # “中“
# 与上边组 1110 0100 10111000 10101101 -》就是 e4b8ad

b’xxxxx’ xxxx 应该是字节数,例如ascii中的,或者是用16进制表示的汉字。

b’a’ == b’\x61’。

b’\e4\xb8\xad’ 按照utf8解码后就是‘中’。

图形界面

Python3 Tkinter Qt

wxwidgets,Kivy,Fltk

相关文章:

python常见问题详解

Python python 没有多态,而是鸭子类型 多继承,没有接口,可通过语法糖实现接口的作用 lambda中只能有一句 "/"表示之前的参数是必须是位置参数,”**“表示是后面的必须是关键字参数 Python多进程 Python 多线程是伪多线…...

MyBatis-常用SQL操作

一、动态SQL 1.概述】 1.1动态SQL: 是 MyBatis 的强大特性之一,解决拼接动态SQL时候的难题,提高开发效 1.2分类: if choose(when,otherwise) trim(where,set) foreach 2.if 2.1 做 where 语句后面条件查询的,if 语句是可以…...

DSPE-PEG-TCO;磷脂-聚乙二醇-反式环辛烯科研用化学试剂简介

中文名称 磷脂-聚乙二醇-反式环辛烯 英文名称 DSPE-PEG-TCO 外观:粉末或半固体,取决于分子量。 溶剂:溶于大部分有机溶剂,如:DCM、DMF、DMSO、THF等等。在水中有很好的溶解性 稳定性:冷藏保存&#xff…...

华为OD机试真题Java实现【最小施肥机能效】真题+解题思路+代码(20222023)

最小施肥机能效 某农场主管理了一大片果园,fields[i]表示不同果林的面积,单位:( m 2 m^2 m2),现在要为所有的果林施肥且必须在 n 天之内完成,否则影响收成。 小布是果林的工作人员,他每次选择一片果林进行施肥,且一片果林施肥完后当天不再进行施肥作业。 假设施肥机的…...

【问题记录】【排查问题的方法总结】vue3中数据失去响应式?为什么数据变了,视图只更新了一次就不再更新了?

一、问题概述: 持续请求的数据变动之后,控制台输出绑定的响应式变量 mapObj 的确变了,但是视图上只更新了一次,后续就不再更新了。 二、排查过程: PC上用定时器setInterval模拟数据(全是小于0的数据)更新&#xff0…...

基于遗传算法的柔性生产调度研究(Matlab代码实现)

👨‍🎓个人主页:研学社的博客💥💥💞💞欢迎来到本博客❤️❤️💥💥🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密…...

Heroku的12条准则

I. Codebase One codebase tracked in revision control, many deploys 要有代码仓库,多版本控制,如使用git来管理代码仓库。 II. Dependencies Explicitly declare and isolate dependencies 明确声明依赖,隔离依赖。强依赖往往会导致连…...

Qt图片定时滚动

目录参考结构PicturePlay.promain.cpppictureplay.hpictureplay.cpppictureplay.ui效果参考 Qt图片浏览器 QT制作一个图片播放器 Qt中自适应的labelpixmap充满窗口后,无法缩小只能放大 可以显示jpg、jpeg、png、bmp。可以从电脑上拖动图到窗口并显示出来或者打开文件…...

深度学习引言

动手学深度学习pytorch版-笔记原文链接日常生活中的机器学习机器学习中的关键组件数据模型目标函数优化算法各种机器学习问题监督学习回归分类标记问题搜索推荐系统序列学习无监督学习与环境互动强化学习特点小结原文链接 动手学深度学习pytorch中文版 日常生活中的机器学习 …...

ESP32 WIFI使用介绍

ESP32 WIFI 概述 WIFI 库支持配置及监控 ESP32 WIFI 连网功能。支持配置 station 模式(即 STA 模式或 WIFI 客户端模式),此时 ESP32 连接到接入点(AP)。AP 模式(即 soft-AP 模式或接入点模式)&…...

JavaEE简单实例——MyBatis的一对一映射的嵌套查询的简单介绍和基础配置

简单介绍: 在前一章我们介绍了关于MyBatis的多表查询的时候的对应关系,其中有三种对应关系,分别是一对一,一对多,多对多的关系。如果忘记了这三种方式的对应形式可以去前面看看,一定要记住这三种映射关系的…...

详解指针(进阶版)(1)

前言:总篇章分为(1)和(2),本篇内容包括:指针数组,数组指针,&数组名与数组名的区分 数组传参 ,函数指针,函数指针数组 part 1:指…...

【OJ】盐荒子孙

📚Description: 盐体图 盐是对人类生存具有重要意义的物质之一。当中国古人从肉食为主转向谷食为主的时候,吃盐的需求就发生了,因为动物血肉里面包含有足够人体所需的盐分,而谷 物本身不包含盐分。在长达几十万年的旧石器时代&…...

Java数据结构 —— 手写线性结构(稀疏数组、栈、队列、链表)

目录 稀疏数组 顺序表 链表 单向顺序链表 双向链表 双向循环链表求解约瑟夫环(Joseph) 栈 顺序栈 队列 顺序队列 顺序循环队列 稀疏数组 当一个数组中大部分值为0,或者相同时,可以采用稀疏数组的方式来保存,从而节约存储…...

docker部署gitlab过程中遇到的一些问题记录

文章目录用nginx代理docker部署的gitlab服务密码重置docker0网卡异常离线安装apt的包用nginx代理docker部署的gitlab服务 一般咱们不会去暴露很多端口给外面,所以部署完gitlab后,我希望能够用nginx来代理我们的gitlab服务。 gitlab的docker部署参考这个…...

数组的定义与使用

文章目录 数组的基本概念数组的基本用法数组与方法互操作一、数组的基本概念 数组:可以看成是相同类型元素的一个集合。在内存中是一段连续的空间。 注意:1. 数组中存放的元素其类型相同 2. 数组的空间是连在一起的 3. 每个空间有自己的编号&#xff0…...

SAP ABAP用程序删除开发KEY

在BASISI系统管理中,用户的开发Key存储在DEVACCESS表中,如果由于审计需要删除一些用户的开发Key,而系统有限制SM30, SE16 or SE16N 等事务码的使用,你就可以通过一个小程序去删除开发Key。 代码如下: REPORT ZBCDEV…...

安卓设备TF卡概率性无法识别问题

现象 使用t卡的设备出货前检测是正常的,放在仓库中或出货后再开机,有概率的机器无法识别,重新插拔或重启无效,拔下来放pc电脑上识别后再插回设备则恢复正常能识别。 设备信息 系统: Android 8.1.0 数量:抽检有12%的设备无法识别 TF卡:SanDisk Ultra 64GB 10 A1 microS…...

linux安装nodejs和微信小程序自动化部署操作

一.运行环境安装 Node.js 并且版本大于 8.0基础库版本为 2.7.3 及以上开发者工具版本为 1.02.1907232 及以上安装node.js(1).下载node包官网地址:https://nodejs.org/en/download/如果英文不好的,可以看中文网站:https://nodejs.org/zh-cn/download/点击上面的进行下载,当然,也…...

JavaScript高级 Proxy Reflect

1. Proxy 1. 监听对象的变化 有一个对象,我们希望监听这个对象中的属性被设置或获取的过程 我们可以通过 Object.defineProperty 来实现 const obj {name: "why",age: 18,height: 1.88 }// 需求: 监听对象属性的所有操作 // 监听属性的操作 // 1.针对…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南

点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查

在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...

系统设计 --- MongoDB亿级数据查询优化策略

系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...

html-<abbr> 缩写或首字母缩略词

定义与作用 <abbr> 标签用于表示缩写或首字母缩略词&#xff0c;它可以帮助用户更好地理解缩写的含义&#xff0c;尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时&#xff0c;会显示一个提示框。 示例&#x…...

中医有效性探讨

文章目录 西医是如何发展到以生物化学为药理基础的现代医学&#xff1f;传统医学奠基期&#xff08;远古 - 17 世纪&#xff09;近代医学转型期&#xff08;17 世纪 - 19 世纪末&#xff09;​现代医学成熟期&#xff08;20世纪至今&#xff09; 中医的源远流长和一脉相承远古至…...

Yolov8 目标检测蒸馏学习记录

yolov8系列模型蒸馏基本流程&#xff0c;代码下载&#xff1a;这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中&#xff0c;**知识蒸馏&#xff08;Knowledge Distillation&#xff09;**被广泛应用&#xff0c;作为提升模型…...

人机融合智能 | “人智交互”跨学科新领域

本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...

《Docker》架构

文章目录 架构模式单机架构应用数据分离架构应用服务器集群架构读写分离/主从分离架构冷热分离架构垂直分库架构微服务架构容器编排架构什么是容器&#xff0c;docker&#xff0c;镜像&#xff0c;k8s 架构模式 单机架构 单机架构其实就是应用服务器和单机服务器都部署在同一…...

云原生周刊:k0s 成为 CNCF 沙箱项目

开源项目推荐 HAMi HAMi&#xff08;原名 k8s‑vGPU‑scheduler&#xff09;是一款 CNCF Sandbox 级别的开源 K8s 中间件&#xff0c;通过虚拟化 GPU/NPU 等异构设备并支持内存、计算核心时间片隔离及共享调度&#xff0c;为容器提供统一接口&#xff0c;实现细粒度资源配额…...

拟合问题处理

在机器学习中&#xff0c;核心任务通常围绕模型训练和性能提升展开&#xff0c;但你提到的 “优化训练数据解决过拟合” 和 “提升泛化性能解决欠拟合” 需要结合更准确的概念进行梳理。以下是对机器学习核心任务的系统复习和修正&#xff1a; 一、机器学习的核心任务框架 机…...