github

给Python代码加上酷炫进度条的几种姿势

你说的曾经没有我的故事 提交于 2021-02-12 03:17:58
点击上方 『 早起Python』 关注并 星标 第一时间接收最新Python干货! 大家好,在下载某些文件的时候你一定会不时盯着进度条,在写代码的时候使用进度条可以便捷的观察任务处理情况,除了使用print来打印之外,今天本文就介绍几种给你的Python代码加上酷炫的进度条的方式。 自定义ProgressBar 最原始的办法就是不借助任何第三方工具,自己写一个进度条函数,使用time模块配合sys模块即可 import sys import time def progressbar (it, prefix= "" , size= 60 , file=sys.stdout) : count = len(it) def show (j) : x = int(size*j/count) file.write( "%s[%s%s] %i/%i\r" % (prefix, "#" *x, "." *(size-x), j, count)) file.flush() show( 0 ) for i, item in enumerate(it): yield item show(i+ 1 ) file.write( "\n" ) file.flush() for i in progressbar(range( 15 ), "Computing: " , 40 ): do_something()

六种酷炫Python运行进度条

半世苍凉 提交于 2021-02-12 03:14:27
大家平时比如 pip 安装包的时候,经常会出现进度条提示,Python是否能实现这样的打印? 而且他们又都是千篇一律的黑底白色,是否想过打印的炫酷一些呢? 今天给大家介绍下目前6种比较常用的进度条,让大家都能直观地看到脚本运行最新的进展情况。 1.普通进度条 2.带时间进度条 3.tpdm进度条 4.progress进度条 5.alive_progress进度条 6.可视化进度条 1.普通进度条 在代码迭代运行中可以自己进行统计计算,并使用格式化字符串输出代码运行进度。 import sys import time def progress_bar () : for i in range( 1 , 101 ): print( "\r" , end= "" ) print( "Download progress: {}%: " .format(i), "▋" * (i // 2 ), end= "" ) sys.stdout.flush() time.sleep( 0.05 ) progress_bar() 进度条1 2.带时间进度条 导入time模块来计算代码运行的时间,加上代码迭代进度使用格式化字符串来输出代码运行进度。 import time scale = 50 print( "执行开始,祈祷不报错" .center(scale // 2 , "-" )) start =

2021-02-11:如何求出两个字符串的最大公共子序列长度?

社会主义新天地 提交于 2021-02-12 00:16:21
福哥答案2021-02-11: 举例:"moonfudadayx"和"mfyudadxxax",最大公共子序列是"mfudadax",长度是8。 自然智慧即可。 1.递归。有代码。 三种情况。右移 右移;右移 不移;不移 右移。 2.动态规划。有代码。 dp[i][j]依赖左边,上边,左上边。 ①.如果str1[i]==str2[j],dp[i][j]=【左上边】+1。 ②.如果str1[i]!=str2[j],dp[i][j]=max(【左边】,【上边】)。 代码用golang编写,代码如下: package main import "fmt" func main() { str1 := "moonfudadayx" str2 := "mfyudadxxax" ret := longestCommonSubsequence1(str1, str2) fmt.Println("递归:", ret) ret = longestCommonSubsequence2(str1, str2) fmt.Println("动态规划:", ret) } //递归 func longestCommonSubsequence1(s1 string, s2 string) int { if len(s1) == 0 || len(s2) == 0 { return 0 } return

java每日一题20201006

♀尐吖头ヾ 提交于 2021-02-11 23:04:15
大家好,我是向同学,从今天继续每日一题, 旨在为提高大家的基础知识。 话说干了这么多年的开发,只知道会用,怎么用,用什么,隐约也知道了为什么用,但为啥JAVA总像一个犹抱琵琶半遮面的女子,总让人看不透,看不腻? 应该就是基础不扎实了 。 每日一题20201004答案: 点击下面链接查看每日一题20201004: java每日一题20201104 method01的重载可以正常编译通过;method02不能正常编译。 编译时报错信息如下: Method method02 (List<Integer>) has the same erasure method02 (List<E>) as another method in type Ques1103 意思就是method02(List<Integer>)方法在编译时擦除类型后的方法是method02(List<E>), 与另一个方法重复了(即是方法签名重复),这就是java泛型擦除引起的问题。 在编译后所有的泛型类型都会做相应的转化,转换规则如下: List<String>、List<Integer>、List<T>擦除后的类型为List; L ist<String>[]擦除后的类型为List[]; List<? extends E>、List<? super E>擦除后 的类型为List<E>; List<T extends

vscode 中使用新windows terminal 并修改主题

浪子不回头ぞ 提交于 2021-02-11 22:39:15
目前没有找到能在vscode中使用的办法... 建议还是cmder吧, 不要瞎折腾了 还是gg好啊, 找了一会就找到了, 浪费我几个小时用bing和百度... 原文链接: vscode 中使用新windows terminal 并修改主题 https://docs.microsoft.com/zh-cn/windows/terminal/ https://github.com/microsoft/terminal https://iterm2colorschemes.com/ https://windowsterminalthemes.dev/ https://medium.com/analytics-vidhya/how-to-replace-external-terminal-in-visual-studio-code-with-the-new-windows-terminal-66e8460f2d31 cmder太慢了...所以想试试windows terminal 安装 直接在应用商店安装就行 这个看着是触摸板和手写板的问题 修改配置文件 ~\AppData\Local\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\RoamingState\profiles.json 主题切换 https://github.com

10 年 bloger 告诉你要不要写博客,又该如何优雅地写博客?

旧街凉风 提交于 2021-02-11 22:02:06
点击上方 蓝色字体 ,关注我 —— 一个在 阿里云 打工的 清华 学渣 ! 关于作者:程序猿石头(ID: tangleithu),现任阿里巴巴技术专家,清华学渣,前大疆后端 Leader。公众号后台回复关键字 “ 1024 ” 获取程序员 大厂面试指南 。 图:Drone promotions from SkyPixel 背景 石头大约在 2010 年左右有了自己的第一个域名,也是从那个时候开始写博客的。至今确实有 10 年时间了。 最初玩 blog,其实更多的还是抱着 学习 的态度。比如刚学习完了 DNS 解析,HTML 语法,不 “实战”一把么?然后后续又陆陆续续把读书笔记、课程总结都往博客上放。 为什么要写 blog,石头觉得有如下几个好处: 可以把它作为整理学习笔记的地方,方便沉淀学习,就跟当初我开始玩一样。更多的是写给自己看,玩玩“建站”流程(独立博客),也算一个小技能。(要不要写博客看个人兴趣, 但 学会总结沉淀是必须的 ) “成就自己、帮助他人”。在日常工作中,你肯定也有通过别人的博客解决了你的某个问题,这个时候“反哺”一下开放的互联网也何尝不是一件快事。当有人通过搜索引擎检索到你的内容并留言说感谢帮助他解决一个类似问题的时候,还是有一丝丝成就感的。 锻炼写作能力。一个问题自己懂和把它讲给别人懂,是两个完全不一样的概念。 打造个人 IP。例如著名的 coolshell

jvm调优神器——arthas

别等时光非礼了梦想. 提交于 2021-02-11 21:52:36
在上一篇 《jvm调优的几种场景》 中介绍了几种常见的jvm方面调优的场景,用的都是jdk自带的小工具,比如jps、jmap、jstack等。用这些自带的工具排查问题时最大的痛点就是过程比较麻烦,就好比如排查cpu占用率过高的问题,就要top->jps->printf->jstack等一系列的操作。本篇介绍一个jvm工具,它是阿里巴巴开源的一个工具——arthas(阿尔萨斯)。 一、安装 arthas在github上有个page,地址是 https://alibaba.github.io/arthas/ 。 安装的方式有好几种: 直接下载一个可以启动的jar包然后用java -jar的方式启动 用官方提供的as.sh脚本一键安装 用rpm的方式安装 本篇介绍第一种方式,因为它简单而且想迁移的时候也超级方便(毕竟只需要把下载的jar包拷贝走就行了)。 curl -O https://alibaba.github.io/arthas/arthas-boot.jar 如果下载速度太慢,可以用gitee上的源 curl -O https://arthas.gitee.io/arthas-boot.jar curl命令直接把arthas-boot.jar下载到你想要的目录 [root@localhost ~]# ll -lrt -rw-r--r--. 1 root root 138880

【spring boot】14.spring boot集成mybatis,注解方式OR映射文件方式AND pagehelper分页插件【Mybatis】pagehelper分页插件分页查询无效解决方法

ぃ、小莉子 提交于 2021-02-11 21:35:20
spring boot集成mybatis,集成使用mybatis拖沓了好久,今天终于可以补起来了。 本篇源码中,同时使用了Spring data JPA 和 Mybatis两种方式. 在使用的过程中一定要注意,JPA和Mybatis可以在同一个方法中调用,但是如果要保证事务一致性, 千万不要 把JPA的操作和Mybatis的操作放在一个事务中 项目GitHub地址: GitHub地址 spring boot 2.0 ================================================================== 注意点:   1.mybatis是有自动生成实体、Mapper映射类[实际是接口]、Mapper.xml映射文件的插件,插件名字叫【 mybatis generator 】,这里没有使用。   2.使用mybatis的话,是有两种实现方式的。     1》注解的方式     2》映射文件的方式   其实,注解的方式类似于JPA 的使用注解@Query()的方式。   整个使用下来,还是建议简单的CRUD操作,使用spring-data-JPA进行操作可以节省大量的代码量。   复杂的查询操作,就可以采用mybatis来完成,通过自己写sql语句提高灵活性,当然使用JPA来操作也可以完成。   3.第二点中的注解和映射文件两种方式

python线程和进程

被刻印的时光 ゝ 提交于 2021-02-11 21:01:08
总结 1,怎么创建进程和启动 2,jion方法的作用 3,subprocess模块的作用和使用 4,线程的创建和启动 5,继承线程类创建 6,临界资源 7,多线程的通信,设置一个全局变量 8,如何对临界资源进行保护,线程锁 9, 如何加锁和解锁 10,io密集和计算密集 11,协程:单线程+异步IO 在脚本运行过程中有一个主线程,若在主线程中创建了子线程,当主线程结束时根据子线程daemon属性值的不同可能会发生下面的两种情况之一: 如果某个子线程的daemon属性为False,主线程结束时会检测该子线程是否结束,如果该子线程还在运行,则主线程会等待它完成后再退出; 如果某个子线程的daemon属性为True,主线程运行结束时不对这个子线程进行检查而直接退出,同时所有daemon值为True的子线程将随主线程一起结束,而不论是否运行完成。 进程和线程 今天我们使用的计算机早已进入多CPU或多核时代,而我们使用的操作系统都是支持“多任务”的操作系统,这使得我们可以同时运行多个程序,也可以将一个程序分解为若干个相对独立的子任务,让多个子任务并发的执行,从而缩短程序的执行时间,同时也让用户获得更好的体验。因此在当下不管是用什么编程语言进行开发,实现让程序同时执行多个任务也就是常说的“并发编程”,应该是程序员必备技能之一。为此,我们需要先讨论两个概念,一个叫进程,一个叫线程。 概念

为什么大公司要开源自己的技术?

[亡魂溺海] 提交于 2021-02-11 20:57:00
大约一个月前,谷歌公开了用于Big Transfer(BiT)的预训练模型和微调代码——Big Transfer是一种深度学习的计算机视觉模型。根据谷歌的说法,Big Transfer将允许任何人在相应的任务上达到最优表现,即使每个类只有少量的标签图片。这仅仅是这家科技巨头免费向公众开放其专有产品的一个例子。要知道,发布强大的免费开源软件已经成为科技界的常见事件,并引发了这样一个问题:大型科技公司这么做得到了什么回报? 在90年代后期,当Open Source Initiative出现时,将源代码公开的想法被认为是一个坏策略,因为专有软件是标准,公司会尽一切努力保护软件。到2020年,开源的概念发生了巨大的变化,现在已经成为主流。 如今有许多开源技术公司,其中一些公司的年收入已经超过1亿美元(甚至10亿美元),包括红帽、MongoDB、Cloudera、MuleSoft、Hashicorp、Databricks(Spark)和Confluent(Kafka)。 除了上述科技公司高调收购和投资开源项目外,谷歌和Facebook等科技巨头也把开源放到了难以置信的重要位置,因为开源对于收集新产品的创新和建立一个庞大的开发者社区非常重要。例如,Flutter vs React Native、Tensorflow vs PyTorch、Kubernetes等