
python
python如何使用,以及使用python完成的一些东西。
音程
这个作者很懒,什么都没留下…
展开
-
使用Python的subprocess执行另外一个python文件(应用之一是Pytorch中如何让多个不同的模型同时/并行进行训练)
p1和p2这两个进程谁先执行完毕是未知的。使用wait之后,我们会等待这两个进程都执行完毕之后再执行主程序。上面这样执行另外一个python程序,其实我们并没有关心那个程序什么时候运行结束。所以,如果helloworld.py需要额外传入参数才能运行,可以在那个列表。上面只调用了一个外部文件执行,我们可以多调用几个,这几个程序是并行执行的!运行结束后会输出一些结果,这些结果是主程序需要的。的文件,在主程序如下运行即可。这样的话,后面的程序就会等待。运行结束才能往下运行,因为。运行结束后再运行,没有。原创 2024-09-23 12:21:57 · 845 阅读 · 0 评论 -
(完全解决)Python字典dict如何由键key索引转化为点.dot索引
这个时候嵌套字典行不行呢?也就是字典里的某一个值又是一个字典,不行!原创 2024-05-25 23:09:24 · 522 阅读 · 0 评论 -
在linux环境下使用命令行运行python项目时包(模块Module)以及文件路径的问题
由于个人一直习惯就是使用绝对路径,所以以前一般比较少碰到标题所示的问题。这次遇到一个项目,其全部使用的是相对路径,然后我在linux环境下运行。是一个绝对路径,所以你进入linux之后,可以在任何工作目录执行上述命令。其次,如果项目文件中导入包是相对路径(这个一般都是),例如假设我们的。但是,如果这个项目里面有代码使用相对路径,例如代码要打开文件。提醒python如果找不到包可以在上述目录下寻找。,那么就有可能报错。不报错的情况是,你需要在。那么如上还是可能会报错,即没有模型名字叫做。原创 2023-11-03 21:58:56 · 1457 阅读 · 0 评论 -
使用networkx查看某一个节点的一阶/二阶/三阶邻居
一般情况下,貌似这些图之类的包,只提供查询一个节点的一阶邻居,但是有的时候我们需要二阶甚至三阶,那么该如何做呢?注意一下,本文的方法仅可以针对二阶或者三阶,更高阶的代码没有提供。假设有下面这个图。原创 2023-06-23 16:49:20 · 2790 阅读 · 0 评论 -
load_ext是干什么的(autotime,autoreload)
比如我们有一个自己写的utils包,在jupyter的开头import了,后来,我们在jupyter中运行之后发现有utils中的某个函数有bug,然后我们纠正了那个函数,重新在jupyter中运行。我觉得可能是因为我们现在的背景是IPython,而不是Python,这两者有一定的差别。这个时候,按照道理,仍然是会报错的,因为jupyter不会帮你自动刷新utils这个包。作用:这个扩展autotime的作用就是,给出每一个单元格运行所花费的时间。注意,上面那一行不要写注释,否则报错,写注释要换一行。原创 2022-12-21 16:45:37 · 3368 阅读 · 0 评论 -
(有什么区别)Python中return self和return None或者return或者不写
主要是return self是什么鬼,一般很少见,但是这次见到了,所以想搞懂一下,其有什么用,如下:我的感觉是好像没有什么用。首先,return None或者return或者不写作用应该是一样的,就是什么也不返回,也就是返回为空。原创 2022-11-18 16:02:50 · 1449 阅读 · 0 评论 -
(简单搞懂)from abc import ABC,abstractmethod是什么意思
基础不是很好,很少关注这些基础的东西,这次项目有人用了,不得不搞懂一下了。原创 2022-11-18 11:28:16 · 9137 阅读 · 2 评论 -
(完全解决)Python中pip如何安装github上的一个包
并不是github上面的每一个项目都能叫做一个包,一般来说,包的标识:项目的目录下有setup.py文件。为什么不直接pip install 包名?反而要提到github。这是因为有的包可能是个人开发的,过于小众,没有被收录到python的官方源中,所以pip install 包名根本找不到这个包。原创 2022-10-23 20:42:45 · 34544 阅读 · 6 评论 -
(完全解决)argparse中dest是什么意思
上面的#行中,引号里面的,都是。官方还继续区分,'-‘开头的叫做short option string,’–'开头的叫做long option string。好了,然后再翻译一下官方,即dest你不写,也是有默认值的,例如#1,默认值是foo_bar,#2中默认值是x。这个时候,你在看例子,发现在例子中foo只是一个幌子,bar才是真正的属性名大佬。不过,我还是决定带你看一看。但是传递完了之后,属性只能是。原创 2022-10-23 11:35:03 · 2040 阅读 · 0 评论 -
python类的一些关键笔记
注意,本文只适合学过面向对象编程的看,用于温故知新的,而不是新手。新手想要系统自学python,可以移步B站,本文也来自。原创 2022-10-21 20:24:42 · 233 阅读 · 0 评论 -
python中的counter类
这个类实在是太常用了,所以记录一下。这个类是用来计数的,统计一个列表中的元素各自出现了多少次。我们的流程是,先传入列表构造类,然后使用类的方法,得到我们想要的信息。结果如下:其表示,3出现了2次,其余都是1次。用于显示次数最多的n个元素,...原创 2022-07-09 19:30:46 · 455 阅读 · 0 评论 -
python实现笛卡尔积,实现不同长度的列表元素之间进行组合,zip的升级版
缺点是只能相同长度。厉害了,不知道其怎么实现的, 如果是我,只会写3重循环进行组合。原创 2022-06-21 16:10:18 · 593 阅读 · 0 评论 -
(python)对于有序列表的高效率操作(官方库)(例如二分查找等)
文章目录插入元素仍然保持有序二分查找某一个值并返回索引本文针对的是有序的python列表的操作,并且默认是升序的列表。如果你的是降序,只需要逆置列表即可。import bisecta=[1,2,2,3]#升序列表。插入元素仍然保持有序bisect.insort(a,4)二分查找某一个值并返回索引bisect.bisect_left(a,2)1bisect.bisect_right(a,2)3bisect_left()函数的输出是num在list中最左面值的数组下标原创 2022-05-18 20:12:20 · 1401 阅读 · 0 评论 -
(python加速)轻松学会多进程处理ProcessPoolExecutor
文章目录前言判断素数ProcessPoolExecutoras_completedmap前言这个东西对于一些循环重复的操作,可以让你的程序加速好几倍,如果再加上编译的话,就更快了。所以,赶紧学起来吧。判断素数前言中的场景如下:我们需要判断100个数是否为素数,判断一个是否为素数的代码如下:def is_prime(n): if n < 2: return False if n == 2: return True if n % 2 ==原创 2022-05-02 10:25:43 · 3895 阅读 · 2 评论 -
简单介绍psutil库(virtual_memory()、cpu_percent()
psutil是一个Python写的方便获取系统硬件和性能信息的库。virtual_memory()是psutil内置一个获取内存使用情况的函数, 其返回一个svmem对象,该对象有一些属性例如:total,available,percent等等。具体如下:那么问题来了,其中的free以及available是什么区别呢?在Linux下的计算方式为(其他平台不一定适用):# 物理内存大小 = 物理已使用的内存 + 物理没使用的内存 total = used + free# 可用内存大小 = .原创 2022-04-26 16:34:03 · 4124 阅读 · 0 评论 -
(完全解决)UnboundLocalError: local variable ‘rule‘ referenced before assignment
文章目录前言困惑解答前言看了很多人说的,都没有说到点上,根本没有解释原因或者解决我的困惑。遂有此篇。困惑我们先看两个例子,我问你,下面哪个会报错。x=[2,3]#全局变量def a(): print(x) x[0]=1a()x=[2,3]#全局变量def a(): print(x) x=1a()哈哈,很神奇,第一个不报错,第二个报错。解答如果你在一个函数内部,对一个全局变量x进行了赋值,例如下面这种:x=5x=[1,2]x=x+1那么pyth原创 2022-04-18 15:18:54 · 2814 阅读 · 0 评论 -
(已解决)python中(assert 布尔表达式)后面还有一个逗号什么意思
给个例子,你马上就懂了。我们先写一个没有逗号的。a=2assert a==0然后再写一个有逗号的。a=2assert a==0,"a!=0"发现不同了没有!可以看到,后面那个将我们的逗号后面的内容打印在了错误中!所以,你可以认为这就是一个注释而已。...原创 2022-04-17 18:41:14 · 1137 阅读 · 0 评论 -
itertools中常用的工具(chain,islice)
文章目录chainislicechain你想在多个对象执行相同的操作,但是这些对象在不同的容器中,你希望代码在不失可读性的情况下避免写重复的循环from itertools import chaina = [1, 2, 3, 4]b = [‘x’, ‘y’, ‘z’]for x in chain(a, b): print(x)结果如下:1234xyz好处:如果采用a+b的方式遍历,那么要求a和b的类型一致,如果数据再大一点会,会消耗内存,而chain,是通过创建迭代器原创 2022-03-28 16:14:12 · 542 阅读 · 0 评论 -
python库pickle的用法
import pickle有的时候,一个结果可能花了很久才得到,但是我们不希望每次都在程序开头重新处理一遍,这个时候我们选择将这些结果保存下来, pickle就是这样一个库。pickle:序列化和java中的serialization是一样的。可以把任何一个对象序列化变成二进制从而保存,同时库还负责将他们读取从而还原回来。如下:dic={"me":1}file="dic.pkl"fw=open(file,"wb")pickle.dump(dic,fw)#序列化然后保存到当前目录的dic.pk原创 2022-03-16 14:52:28 · 1566 阅读 · 0 评论 -
python库datetime的使用
文章目录时区时间格式内置时间格式自定义时间格式:基于时间的计算import datetimefrom datetime import datetime时区now = datetime.now()#会自动识别你所在的时区并获得时间。nowdatetime.datetime(2022, 3, 14, 10, 15, 49, 91806)解释:年月日时分秒微秒datetime.utcnow()#获得当前日期和时间对应的UTC(世界标准时间)时间对象时间格式上述的now只是一个时原创 2022-03-14 10:27:05 · 1618 阅读 · 0 评论 -
args, sys.argv的区别
我们先明白两个概念:定义和赋值。前者会先定义好参数,有可能还会赋好默认值。在运行python程序的时候,这两个东西都会收到一些值。前者一收到参数就立马赋值好或者覆盖默认值,而后者就只是会收到一些值而已,需要你自己定义,然后赋值。...原创 2022-03-06 10:52:14 · 892 阅读 · 0 评论 -
一个例子教会你使用Python中的logging模块
文章目录前言例子HandlerFormatterLogger前言有了这个东西之后,在项目中你可以不再使用print了。import logging在这里,先明白两个非常重要的概念:Handler和Formatter。前者用于定义你的日志是要输出到文件还是标准输出(控制台)上;后者用于控制日志的输出格式。下面一个例子你就明白了。例子Handler用于定义你的日志是要输出到文件还是标准输出(控制台)上。logging.FileHandlerstream_handler = loggin原创 2022-03-06 10:30:56 · 620 阅读 · 0 评论 -
python中若干关于类的问题
文章目录前言类的构造类的方法前言本文介绍python中若干关于类的难题,这些问题或者概念竟然让人无法理解或者混淆。因而记录下来,若想到新的会继续更新。类的构造我们只知道__init__(),但是很多人却不知道__new__()。实际上,后者比前者先执行!class A(object): def __new__(cls): print("new") return super().__new__(cls) def __init__(self):原创 2022-03-04 18:59:21 · 532 阅读 · 0 评论 -
(完全解决)(numba)TypingError: Failed in nopython mode pipeline( Invalid use of Function)
使用numba加速的时候报错:from numba import jit@jit(nopython=True)def nodets2key(batch: int, node: int, ts: float): key = '-'.join([str(batch), str(node), str(ts)]) return key在pycharm中报错如下:numba.errors.TypingError: Failed in nopython mode pipeline (step原创 2022-03-03 19:21:10 · 18837 阅读 · 10 评论 -
(超级详细)jit的介绍和用法(python加速)
文章目录前言Lazy compilationEager compilation前言jit是numba库有用功能里面最核心最屌的功能。from numba import jit普通python我不知道有没有安装numba这个库,反正anaconda是默认安装的。我们知道,python是解释性语言,数据类型可以是动态地,带来了很多方便,但是速度也大大降低。而编译性语言,例如c/c++很快,所以jit就是用来编译python的,编译好处就是,可以对代码进行优化,从而加速。jit的编译有几种模式,各个原创 2022-03-03 15:21:56 · 29760 阅读 · 0 评论 -
深入理解IPyton以及Jupyter Notebook中的%time以及%timeit的作用
文章目录背景timetimeit背景看了一些人的,他们要么例子定义得太复杂要么没有说清楚。所以我们举两个简单的例子分别感受一下这两个函数(magic function),然后说一下我自己的理解,这样可以让你知道来龙去脉,有错误欢迎指出。我们打开jupyter notebook。time先定义如下一个变量,n = 1000000然后执行下面的代码。%time sum(range(n))结果:可以看到,显示的是wall time,很多童鞋不知道这个东西是什么,解释如下:In pr原创 2022-03-03 10:47:16 · 1024 阅读 · 0 评论 -
深入理解argparse模块中的add_argument的参数(如action等)
其实还有一些其他参数,这里不一一列举,再比如 nargs的取值还可以是“?这些具体什么含义,以及例子,强烈推荐大家参考python的官方文档。对的,其会将每一个字符都当作list中的元素。可以看到,其特殊之处在于后面没有跟需要指定的值。先透露一下,其实这个我们并不少见,回想linux的风格即可。接着上面的例子,假设这个python文件的名字叫做main.py。下面这个不是开头的那个例子,其比较特殊,但是后面会用到。本文只说了一些常见的参数以及函数。然后就可以了,如何指定参数。有很多的接口选项,例如。原创 2022-02-28 19:28:59 · 3993 阅读 · 0 评论 -
汇总python三种数据结构list,set,dict的常见操作
功能操作去重set(a)排序a.sort()原创 2022-01-05 20:01:53 · 716 阅读 · 0 评论 -
python中一些常用函数和库的介绍(getattr、delattr、id、type、sys、partial、vars)
其功能非常强大,很多人以为其只能获取类的属性,远不止。getattr(a,"b"):获取目标a的属性b,这个目标a不一定要是类。其实你就可以理解为这个东西返回的是a.b。所以,只要符合这种语法的,你都可以对号入座,a可以是类,b是类下的东西。a可以是一个python文件的名字,此时b可以是a文件中的变量,函数和类等,随便你,可以看到非常强大。其中1的使用方法如下:class a(object): def __init__(self): self.b=1obj=a()原创 2021-12-27 09:48:17 · 566 阅读 · 0 评论 -
python库tqdm是什么以及怎么用tqdm、trange和tqdm.notebook
1.是什么?答案:用来显示进度条以及展示每一轮(iteration)所耗费的时间。好抽象,我们重点看怎么用,从而明白是什么。2.怎么用?自行安装,如果是anaconda的话这个是默认已经安装了的。从而导入如下的库。from tqdm import tqdm然后执行下述例子:import timea=[1,2,3]for i in tqdm(a):#用法:tqdm(可迭代对象)=会显示进度条的可迭代对象#所以仍然是可迭代对象,可以使用诸如for i in 【可迭代对象】等遍历形式。原创 2021-12-16 19:05:54 · 24248 阅读 · 2 评论 -
IPython、python shell(command line)、pycharm,python,python IDLE的区别是什么?
文章目录IPython vs python shellpycharm vs python IDLE首先,最容易区别的就是python,这个是编程语言,相当于是一个解释器,是后端。其他四个都是前端,都要依赖它。IPython vs python shell这两个都是交互式,交互式的好处就是:写一句(或一段)代码回车(或者执行)就会执行一句(或一段)代码,而且变量不会丢失,下一句代码可以使用。前者的代表是jupyter notebook,所以别提多好用了;后者就是命令行,基本没有什么人用吧,写一句就要执原创 2021-12-04 15:09:58 · 2335 阅读 · 0 评论 -
在Python函数内部赋值操作是新的变量而不是全局变量
例1:a=0def h(): a=1#赋值操作,是新的变量。hprint(a)结果:0例2:a=0def g(): return 3def h(): a=g()hprint(a)结果:0原创 2021-10-27 14:56:03 · 851 阅读 · 0 评论 -
python中的生成器和迭代器:Generator和Iterator以及yield
Iterator很多都是list,tuple,dict,set,strprint([i*2 for i in range(10)])通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间。原创 2021-10-25 15:04:05 · 400 阅读 · 0 评论 -
如何将一个列表当作元组的一个元素
应该:a=[1,2]b=(a,)print(b)len(b)而不是:a=[1,2]b=(a)b1=tuple(a)print(b)print(b1)原创 2021-09-10 18:41:54 · 307 阅读 · 0 评论 -
pycharm如何执行高级撤销操作回到历史
今天写代码兴奋过头了,认为别人写得太麻烦,所以在看了这个人是要达成什么样的目标之后,把他的代码直接删了,然后自己重写,到后来发现有这样那样的问题,这个时候想参考原来的代码,可是为时已晚,已经是6,7个小时之前了,姑且不问能否一直使用低级撤销ctrl+z,就算可以,估计也要半个小时才能回到6,7个小时之前吧。这个时候,我悲从中来,悔恨自己在最开始的时候没有弄一个备份。但是,痛定思痛,发现了这一个撤销的高级操作,回退到历史,我以前在使用Android Studio的时候也有这个功能,所以试了试pycharm原创 2021-09-10 15:08:29 · 2815 阅读 · 0 评论 -
networkx的基本使用
1.初始化#导入包并初始化一个图。import networkx as nxg=nx.Graph()2.构造一个图#添加(删除)节点和边nodes=[1,2,3]edges=[(1,2),(2,3),(1,3)]g.add_nodes_from(nodes)#g.remove_nodes_from(nodes)g.add_edges_from(edges)#g.remove_nodes_from(edges)3.查看图的节点和边#查看图的节点和边gg.nodesg.e原创 2021-09-10 11:06:42 · 1021 阅读 · 0 评论 -
python中defaultdict()函数的介绍以及应用场景
很多人都把这个讲得很复杂,眼花缭乱的,其实很简单:defaultdict()是对dict的改进,如下:def default0(): return 0from collections import defaultdictddict=defaultdict(default0)#空字典,由于字典是键-值的形式,由于定义了默认值为0,所以当键不存在,则返回默认值。dict={}#平常我们常用的空字典,由于没有定义默认值,所以当键不存在,则直接报错。#测试print(ddict[1])#随便用原创 2021-09-09 09:40:52 · 2988 阅读 · 0 评论 -
from __future__ import absolute_import, division, print_function
这三个函数的功能就是python2 为了适配python3格式做的补充,所以如果是python3的话,是不需要导入的。不过,既然到这里了,那就说说这三个东西的用处。absolute_import :绝对导入,其作用是导入模块的时候如果在当前项目目录下包含相同的模块,则优先导入标准库,也就是说如果你的当前目录有有个time模块,import time导入的仍然是Python官方的time标准库division:精确除法,默认情况下2/4的结果是0,导入division后结果是0.5print原创 2021-09-04 09:22:42 · 1773 阅读 · 0 评论 -
new_zeros()函数的作用
其可以方便的复制原来tensor的所有类型,比如数据类型和数据所在设备等等。例如:device="cuda"a=torch.rand(2,3,4).double()a=a.to(device)b=a.new_zeros((2,3,1))b原创 2021-07-08 20:06:01 · 11554 阅读 · 0 评论 -
python内置函数:iter、enumerate和next
共同点:都可以可以用来访问可迭代对象区别:前者访问迭代对象时只返回元素,后者除了元素还会返回索引,或者叫做访问顺序。iterlis=[4,3,2,8]for data in iter(lis): print("{}".format(data))enumeratelis=[4,3,2,8]for index,data in enumerate(lis): print("第{}个数是:{}".format(index,data))...原创 2021-07-08 15:59:06 · 3628 阅读 · 0 评论