5 months ago

很多人都在担心世界这么乱,将来我们这一代人会不会遇到战争
尤瓦尔·赫拉利提醒我们说,你判断对了困境,但是关心错了问题,为什么?
因为战争已经不是这个时代解决问题的手段了。

过去的财富的样式是什么?是具体的土地和上面的资源。
而现在财富的样式是什么?已经变成了协作,数据,科学和知识。

过去我们解决争端的方式就是发动战争:入侵别国领土,杀掉反抗的人,直接掠夺当地的财富和资源
比如当年八国联军入侵北京,抢走各种金银和文物;日本入侵中国,掠夺各种矿产为战争和本国民生服务;百年前非洲黑奴的大肆贩卖;众所周知,美国当年为了石油入侵伊拉克(这应该不是一个玩笑😊)
而今随着财富形式的转变,以往的领土攻战式战争形式已经很难发生了(各种宗教信仰战争、种族冲突不在本文讨论范围内)
现代的剥削和掠夺方式变得文明,杀人与无形且难以招架
随着证券化和数字化的发展,人们的财富变成了一个个数字:股市里的股票,支付宝、银行卡上面的数字,交易所的数字货币
与之相对应的财富掠夺方式变成了一场股灾,一次贸易战,一次黑客袭击
发达国家利用技术和制度优势,一次次收割发展中国家羊毛
例如美国直接印钞抢劫全世界,对外界进行技术屏蔽,不听话就武力殿后
你还用去抢什么粮仓、牧场、金矿和土地吗?所以用战争已经解决不了问题了。

参考资料:
罗振宇:《今日简史》新书发布会

 
5 months ago

今天在一个读书群里,又有人提‘读书无用论’了:他根据自己的工作经历,提到自己大学内容完全没有用
从小到大,这种思想不绝于耳
1.初中时的数学课代表,班主任
一个初中生没有足够的经验和阅历看到足够长的人生,刚刚毕业没两年的初中班主任也如此
2.中学时的表哥表姐早早辍学
他们的工作大部分在服务员、厨师、水电工这种级别
极个别运气好的开了个体运营汽配店,区域产品代理
3.大学时期迷茫空虚的我
没有目标和方向
4.刚刚毕业头两年不断给自己打鸡血的自己
迷迷糊糊的突然有了小方向:学好外语,进外企

而今已经步入‘三十不立’之年,近期有一个深深的感叹:20岁的时候不好好学习高等数学,等到三十岁想做人工智能的时候却发现基础太薄弱

那些叫嚣着‘读书无用论’的人,恐怕不能简简单单的一句‘见识短浅’就概括,
准确说是他们匮乏的人生经历,让他们无法想象人生更多的可能性
那些吵吵嚷嚷‘学数学有什么用,买菜的时候也用不上’的人,他们的人生也就局限于上班下班,买菜生娃了
并不是说这样的人生并没有什么不好,仅仅是选择不同而已,如果你愿意选择不同的人生,就需要超脱自己原有阶层的认知水平

有一些睿智的朋友,年长的朋友是获得良好认知水平的好方法,他们的认知比我们广阔,可以开拓视野,缩短我们的探索时间

 
5 months ago

晚上认识一个妹子,暂称为爱爱吧,两个人一起聊到的对生活的认知和未来社会的憧憬

线下零售业难以为继

爱爱肤白貌美,有一张标准网红V字脸,身材非常不错,属于邻家小妹,小家碧玉类型
之前在天街(下沙CBD知名综合商业体)做服装销售,业绩一直无法提升,每个月基本工资加提成只有三千块
跟我想象中的一样,在电商和快递的严重冲击下,实体零售业步履维艰,难以为继
哪怕像天街这样作为下沙绝对商业中心的存在,实体零售也无可避免苟延残喘的境地
这一点我在两三年前天街刚刚开业时,过去闲逛的时候就从空空荡荡的实体零售店,还有倦怠的售货员脸上就看出了端倪
这一次亲耳从当事人身上得知内情:每天在衣着靓丽地在繁华高端的场所工作,每个月却只领两三千微薄的薪水,还不包吃住,个中滋味,只能自己体会了
记得10年刚毕业的时候,开始三个月每月拿800块,公司还提供八人间宿舍和一顿午饭,那时候杭州最低工资标准1100块
现在的三千元,跟我当年的800块应该是一样的感觉吧
好歹爱爱现在及时脱离了苦海,也算是一大幸事

电商也已成为传统行业

朋友圈有个妹子重回职场想回归线上生意的时候,同样是举步维艰
跟电商行业的好友聊天,大家已经用"传统电商"来形容线上行业。
所以迎来了"新媒体"这个岗位,线下销售被线上客服替代,线上客服被主播代替,时代的变迁,90后的消费大军占领市场。
主播网红成了新的销售渠道,甚至视频卖货已经成了淘宝主要销售模式(君不见,百科百科全面开启视频模式)
没赶上网红的大佬们开始提新零售,于是有了体验式购物的盒马生鲜,物美小米都开始线下体验、线上下单、送货上门了

服务业是面向未来的行业

不管社会如何发展,科技如何发达,服务业总是蓬勃发展的,因为人类天性就是贪图享乐,不愿吃苦
基于这样的判断,爱爱选择了转型服务业
爱爱外形条件很好,其实很适合化妆、美甲这一行业,她之前也尝试过,但是实在没法在小小的指甲上画出完美的图案,不久放弃了

未来屏幕无处不在

也许是受到科幻电影的影响,在爱爱的认知中,未来人类的生活一定在是可以随时伸出手指,通过指指点点和语音来控制连接各种各样的软硬件设备
那时候的人类一定是极端懒惰,已经完全摆脱了体力劳动,完全只需要从事脑力劳动就可以实现自我价值
爱爱很担心人类的身体机能会下降,从而导致免疫系统下降,最终人类寿命会极端下降
而我觉得,既然无需体力劳动,那索性就不要各种肉体器官好了:只需要把人类的大脑————主要是记忆、思考和感知能力保留即可
人类可以把自己的思想移植到电子芯片中,我们的思想通过网络进行传播和交流
那时候的人类,外在表现形式不再是一个人形的生物,可以是各种各样的外在形式,比如电脑,机器人,手机,手表.....
甚至可以自由自在在这些事物之中自由穿梭于存在
传统的长生不老都是追求肉体的长久存在,这是违反自然界定律的
如果我们能放弃肉体的存在,转而追求思想的永续的话,摆脱了物质生活的束缚,人类文明一定能达到一个全新的高度

参考资料:
尤瓦尔-赫拉利:自然选择过于漫长,我们不想再等十万年

 
5 months ago

年轻人不要急着成功
想清楚两个问题:1.你是谁;2.你准备成为什么样的人
想清楚这两个问题,确定自己的目标,坚持努力,持续进步,结果自然会来

很多时候,身为局中人,我们看的并不是辣么清楚,所谓当局者迷
不要着急,不要停下来,让我们骑驴找马,在行动中去寻找
所谓人生的意义,并不是你我简简单单在家喝喝茶,翻翻书,看看电影从他人故事中得出的小感动
而是我们经历种种,对过往经历的回顾和总结
这里忍不住借鉴保尔-柯察金的经典名言:人最宝贵的是生命,生命对于人来说只有一次。
一个人的一生应该是这样度过的:当他回首往事的时候,他不会因为虚度年华而悔恨,也不会因为碌碌无为而羞耻

所以人生意义的真谛在于实践和经历,不在臆想和自嗨

寻找路上我们可以寻找一些助力:万卷书,万里路,阅无数人 都是很好的历练和经历
我们一生的精力是有限的,不可能经历所有的人生,以上几种途径是我们体验其他人人士经验的很好途径

1.最好的证据就是几年前第一次换工作,直接从民营企业到外企,工资翻倍,待遇和机遇提升很多,提高了自己的认知和生活品质
2.还有一个就是近期自己准备转行了,默默无闻的自己却接到了两位同事推荐的很好的机会,工资直接翻倍了

 
5 months ago

1.罗马字母发音体系
中文的书写使用了方块文字,属于表意文字;拼写采用汉语拼音,属于罗马字母
这一点跟英文很像,英文的26个字母完全采用拉丁字母,其发音国际音标同样以拉丁字母为基础
所以说汉语拼音和国际音标在发音上有很多相近之处,这一点当年我在学英语过程中慢慢发现
所以让老外从拼音开始上手汉字的拼读完全没有问题

2.声调(音律rythem)
以上方法拼读很容易让老外的发音变成engliese,要想学会纯正的汉语发音,需要注意声调问题
现代汉语普通话中有四个声调以及轻声,在实际发音过程中,音调较平,缺乏音律感和节奏感
英语在实际使用过程中音律和节奏感很强,充满了灵性,让人印象深刻
所以说如果要老外练成标准的汉语,需要把语调磨练平平,从一个充满灵性的人变成一个平庸的人,听起来着实伤心

具体执行过程中,需要增加学习者的在实际生活中的参与度
找个中国男朋友,每天多多练习,这个是最快的路径(话说几年前就听说有中国女孩儿为了学好英文,找了老外男朋友)
读读带拼音标注的童话故事、名著缩略版是一个很好的方式
包括学习儿歌、童谣、唱卡拉OK也是老外喜闻乐见的
让老外参与到不同的生活场景中,在具体语境中不断练习是最好的学习方式

参考资料:
百度百科:汉语拼音
维基百科:国际音标
维基百科:汉语拼音

 
5 months ago

背景

周周刚刚毕业两年,之前在建设银行将近两年工作经历,然后三个月产品经理协调人经历
去年自学过前段编程,最近在线学习产品经理课程,下周开始找产品经理岗位
纵观以往经历,实际并无产品经理工作经验,只能出奇制胜
提出自己对产品经理的认识:在用户需求和开发人员之间做协调工作,其实属于服务行业
面试有两个核心:
1.突出自己的服务意识和工作激情;2.夸大三个月的产品经理协调人的工作经历
具体采取措施:
1.突出自己银行工作经历,重点提到自己的服务意识
银行其实属于服务业,只要客户能拉下脸,不管客户做什么我们都必须笑脸相迎
之前在工作中遇到多么难搞的客户,强烈的职业精神驱使我们积极面对挑战
2.对工作有激情
在银行基层工作任务中,流程繁琐,每天接触各式各样各行各业的人
我每天拼命努力(举出具体数据),不想工作积压在自己手上,一个月几乎没有几次按时下班的机会
最后连主管都看不下去了,他劝我早点儿回家
3.自己有将近半年的产品经理助理工作经验
介绍公司之前的业务,参与了什么项目(把自己听到的,参与的全部说进去)
每天具体工作是什么:尽量挑跟工作相关的工作内容,部门团建什么的尽量少说
4.自己每天坚持锻炼,做事有韧性
每天努力做一个萌妹子,可以跟开发人员保持良好的关系3
保持健康的身体,哪怕跟开发人员打架没有问题 ^_^

模拟面试

我们在8月18号下午见面,进行了一次模拟面试,周周在整个过程中特别健谈
发现这是一个特别有想法的妹子,之前我想到的问题她都想到了,而且有自己的想法和认识,不需要我的意见
另外,这个妹子的行动力和学习能力特别强,在谈论自己在线学习产品经理课程的过程中,侃侃而谈,对流程特别熟悉
在谈论细节有有理论,有数据,一看就是认真学习,确实作出真实作品,付出过实际行动的人

年中从银行辞职后在亲戚介绍下加入一家互联网金融公司,从事产品经理支持工作,但是工作内容与产品经理相差甚远,领导承诺要好几年之后才有机会接触到产品经理相关内容,直接放弃回家在线学习相关课程了
这一点我自愧不如,之前参加了很多次学习课程都仅仅停留在听一听,了解一下的旁观者状态,并没有作出实际的行动
这一点是最要命的,闲散的心态导致了行动没有持续性,不会得到实际的产出,这一点我需要反思
周周的成长也特别快:从两年前的傻白甜,变成一个有自我思考,有判断有行动力的勇敢妹子,让人敬佩
过程中了解到她之前的学习生活经历,也是跟我一样,被家人保护很好的傻白甜,跟我的成长经历很是相似
小时候有相同的成长经历,成年后有相似的蜕变经历,我觉得可以成为终身伴侣,关键是人家不嫌弃就好

模拟面试中唯二美中不足:
1.简历太稚嫩:应聘岗位相关经历放在次要位置
把教育经历、个人介绍等不相关内容放在前面,感觉像刚刚毕业的大学生找工作,找不到重点(学生腔太浓)
建议把这些放到简历后半部分
2.产品经理工作技能不突出
只是在简历中提到了自己模拟做了keep(一款流行运动app)升级案例,让人一看就是刚刚从培训班里面出来,没有实际工作经验
这样诚实的做法很难让自己有机会拿到面试机会
因为真实的社会每个人都在包装自己,面试官默认自己看到的是包装后的简历
如果真的傻傻在简历中仅仅展现自己实实在在的水平,辣么面试官会认为你的真实水平只会更次
基于这样的社会现实,在简历中适当包装自己是合理的
我的建议是把产品经理支持这一段工作经历拉长,并且将自己的工作职责改为产品经理助理,将原公司的业务逻辑理清楚,挑选其中的若干个环节作为自己的工作经历在面试中展示

模拟面试中特别突出的地方:
整个人就是一个面霸,完全不怯场,回答问题很有逻辑,自然流畅
经过了解,原来高中的时候就是一个学霸,高考失利的情况下依然600多分(高出一本线50多分,总分800)
所以说,只要能过了简历这一关,面试完全不用担心,面对这样一个青春活泼,有激情,思维逻辑清晰的妹子,相信没几个面试官能逃过她的手掌心

找到工作

9月13号已经正式入职新工作了,岗位正式名称‘高级服务运营专员’,实际工作是产品体验————从客户反馈中寻找产品改进点
领导提出的试用期要求很高:单独负责产品线。后期再发展,就是产品经理了
总结整个找工作的过程:两周时间,海投100多份岗位,获得五次左右的面试机会,最后拿到两个offer
面试官说:虽然没什么经验,很看重你的潜力(跟我预想一样,周周这样的斗志和激情很容易征服面试官)
很不错的开始
她说,之前自己就是一个傻白甜,觉得自己每天混吃等死就可以了,所以大学的专业和第一份工作都是家里主导。工作一段时间后,慢慢发觉这不是自己想要的生活。现在才24岁,为什么不可以追求自己喜欢的。
人一旦开始觉醒,一切都会好起来。

 
6 months ago

目前区块链的几种共识机制,无论POW、POS、POP都需要耗费能量,做很多无用功
这一点也是最让人诟病的

我们先看一下大科学家的理解:
整个区块链,大众对它的认识还不是最根本的第一性原理认识。
在区块链上能达到一个共识系统都是用一种算法,需要消耗能量。
这件事情听起来不合理,账户为什么要耗费能量,
但从物理学第二定理来讲,这是非常合理的一件事情,
因为达成共识本身是熵减,但整个世界的熵一定要增加,所以在达成共识的同时一定要把另外一些熵排除出去。
这种没有中心化的机制跟自然世界里面磁铁从杂乱无章的状态达到有序的铁磁状态非常相像,消耗能量付出代价也是必然的趋势。
也有人认为共识是一种价值观的契合
在我看来,外在表现是秩序良好,内因是价值观契合,并没有矛盾
同时共识算法是通过让捣乱行为的成本大于收益,降低捣乱的动机,从而保证信息不被篡改
1.用少数人的无意义完成大多数人的有意义
先讲一个小故事
在我每天上下班的路上,有一个大的十字路口,今年新开了一个交通岗亭,每天早晚上下班期间有警察专门纠正非机动车行为
当然在杭州这个城市,主要纠正的就是电动车,比如逆行、载人等等
这几个警察几乎每个工作日都站在路口,忍受着风吹日晒,重复着简单的动作,时间一长,看出来一些老警察都有些懈怠了
对这几个警察来讲,每天这样简单重复的工作对他们的业务能力和技能提示没有什么帮助,貌似是无意义的工作
但是他们这份简单的工作却减少了交通事故,让这个城市更加文明和谐,是很有意义的
所以我理解的共识为一种秩序,获得良好的秩序必须付出代价:让少数人的无意义完成大多数人的有意义
大自然本当如此,如女性每个月的月经其实就是受孕失败的产物:为了整个一生中为数不多的几次受孕机会,人类时时刻刻都在准备着,你说这样的工作是有意义还是无意义。
人类受精过程同样如此:几亿个精子同时出发,去争夺唯一的一次受精机会,你说这样的工作是有意义还是无意义
从个体来讲,让身体时刻保持一种受孕状态以及那几亿个精子是无意义的,但是它对家族的传承、种族的延续、人类的繁衍具有重大意义
延伸到人类社会,也有很多类似的社会现象
比如农民要不停劳作才能保证农田不被杂草侵蚀,清洁工要不断清扫才能保证街道整洁,公司要不断管理才能保证高效运转
矿工用大量看似重复无意义的工作保证了整个社群的有序稳定(从这个角度,矿工就是区块链世界的警察)
所以哪儿有什么岁月静好 无非有人在替你负重前行
2.人文关怀让世界更美好
说完这些,估计女性同胞、清洁工和农民伯伯要叫苦连天了:难道我们天生如此命贱,只能做被牺牲的个体么
我想可以从人文关怀的角度,采用必要的技术手段,来提示个体的幸福感
比如对于警察,可以采用智能硬件来代替人工操作,据说现在的高清摄像头可以记录高速行驶车辆驾驶人的不规范行为,诸如不寄安全带,边开车边打电话、抽烟
对于女性:提高其家庭地位、社会地位,增加社会认可度,丈夫分担家务,洗碗机、扫地机器人减轻家务
对于矿工:把无意义的挖坑行为变的稍微有意义,比如把挖矿过程改为解决数学难题,为人工智能服务(普通数据标记为德尔塔数据)

参考资料:
《量子计算、人工智能与区块链》

 
6 months ago

关于进程、线程和协程,各种优缺点众说纷纭,大家似乎都很熟悉,今天通过一个实际案例来比较三者的执行效率
这里简单模拟出了两类任务:
1.IO密集型任务,核心代码如下:

def say_sorry():
    print("I am sorry")

2.计算密集型,核心代码如下:

def say_sorry(a, b):
    if a != b:
        pass

本次测试条件:
1.ubuntu系统:双核x1.6G,内存1.5G
2.每项测试核心代码均运行50万次
3.采用time.time模块记录程序实际占用CPU时间

测试结果汇总如下:



由以上简单测试,可以验证出几个结论:
1.进程占用资源最多,耗时最长,执行效率最低;协程占用资源最少,耗时最短,执行效率最高;线程各方面指标居中
2.python中多线程由于GIL(全程解释器锁,仅针对cpython)的原因,并不是真正的多线程,导致CPU性能只发挥了一半
3.单线程和多协程运行时间始终保持在同在一个数量级,由此验证:多协程本质上还是一个进程在执行任务
4.无论是IO密集型抑或是计算密集型,完全不必考虑多任务的问题,反而吃力不讨好
5.在数据量很大的情况下,可以考虑使用协程

参考资料:
知乎:协程的好处有哪些

附录(测试完整代码)
1.IO密集型,单线程

# coding=utf-8
import time

def say_sorry():
    print("I am sorry")


def main():
    start = time.time()
    for i in range(500000):
        say_sorry()
    print("运行时间%.2f秒" % (time.time()-start))

if __name__ == "__main__":
    main()

2.IO密集型,多线程

# coding=utf-8
import time
import threading

def say_sorry():
    print("I am sorry")


def main():
    start = time.time()
    for i in range(500000):
        t=threading.Thread(target=say_sorry)
        t.start()
    print("运行时间%.2f秒" % (time.time()-start))

if __name__ == "__main__":
    main()

3.IO密集型,多进程

import time
import multiprocessing

def say_sorry():
    print("I am sorry")


def main():
    start = time.time()
    for i in range(500000):
        t=multiprocessing.Process(target=say_sorry)
        t.start()
    print("运行时间%.2f秒" % (time.time()-start))

if __name__ == "__main__":
    main()

4.IO密集型,多协程

# coding=utf-8
from gevent import monkey
import gevent
import time

def say_sorry(n):
    for i in range(n):
        print("I am sorry")


def main():
    start = time.time()
    gevent.joinall([gevent.spawn(say_sorry, 500000)])
    print("运行时间%.2f秒" % (time.time()-start))

if __name__ == "__main__":
    main()

5.计算密集型,单线程

# coding=utf-8
import time

def say_sorry(a, b):
    if a != b:
        pass

def main():
    start = time.time()
    a, b = 1, 2
    for i in range(500000):
        say_sorry(a, b)
    print("运行时间%.2f秒" % (time.time()-start))

if __name__ == "__main__":
    main()

6.计算密集型,多线程

# coding=utf-8
import time
import threading

def say_sorry(a, b):
    if a != b:
        pass

def main():
    start = time.time()
    a, b = 1, 2
    for i in range(500000):
        t=threading.Thread(target=say_sorry, args = (a, b))
        t.start()
    print("运行时间%.2f秒" % (time.time()-start))

if __name__ == "__main__":
    main()

7.计算密集型,多进程

# coding=utf-8
import time
import multiprocessing

def say_sorry(a, b):
    if a != b:
        pass

def main():
    start = time.time()
    a, b = 1, 2
    for i in range(500000):
        t=multiprocessing.Process(target=say_sorry, args = (a, b))
        t.start()
    print("运行时间%.2f秒" % (time.time()-start))

if __name__ == "__main__":
    main()

8.计算密集型,多协程

# coding=utf-8
from gevent import monkey
import gevent
import time

def say_sorry(n):
    a, b = 1, 2
    for i in range(n):
        if a != b:
            pass

def main():
    start = time.time()
    gevent.joinall([gevent.spawn(say_sorry, 500000)])
    print("运行时间%.2f秒" % (time.time()-start))

if __name__ == "__main__":
    main()
 
6 months ago

公司在推广一些规范性的规则,传统的方法是反复强调,执行效果堪忧
好做法是修改流程,在工作流程上进行规范,必须新员工入职前必须进行入职体检这项内容可以写到工作流程中
对使用者来讲,更好的做法是新增的工作流程可以不需要我来做,要交给别人来做
这一点在计算机编程领域是可以很容易实现的,把一切工作交给计算机来完成
python的装饰器在不需要做任何代码变动的前提下增加额外功能
比如说在执行原有功能模块之前,先执行登陆、身份验证、权限验证等

参考资料:
facebook的工程师文化

 
6 months ago

python作为一门解释性语言,边解释边执行是其一个特色,由此带来的执行效率地下历来被人诟病。
在执行程序时,解释器逐行读取源代码并逐行解释运行。
每执行一次,就重复一次这个过程,这其中耗费了大量的重复性的解释工作。
为了减少这一重复性的解释工作,Python引入了pyc文件,pyc文件是将py文件的解释结果保存下来的文件
这样,下次再运行的时候就不用再解释了,直接使用pyc文件就可以了,这无疑大大提高了程序运行速度。

对于pyc文件,必须知道以下几点:
1.对于当前调用的主程序不会生成pyc文件;
2.import xxx或from xxx import xxx等方式导入主程序的模块才会生成pyc文件;
3.每次使用pyc文件时,都会根据pyc文件的创建时间和源模块进行对比,如果源模块有修改,则重新创建pyc文件,并覆盖先前的pyc文件,如果没有修改,直接使用pyc文件代替模块;
4.pyc文件统一保存在模块所在目录的pycache文件夹内。

如下图所示,modula_a被module_main导入后会生成对应的pyc文件,但是module_main不会生成pyc文件!!

由此可见,pyc文件是间接生成的
很多厂商为了防止源码外泄,经常会采用把.py源码文件编译后删除,完全使用.pyc文件运行自己的产品。
当然了,你打开*.pyc文件是一对让你崩溃的东西,这样就很好的起到了源码保护的作用。
但是这里要说到的一个问题是:当你在别的机器上(即不是编译py文件的机器或系统)运行python *.pyc时可能会报错:
RuntimeError: Bad magic number in .pyc file
这是由于产生pyc文件与运行pyc文件的python版本不同所造成的(python版本号就由这个所谓的magic number标记)
虽说这个magic number指的是pyc文件开头的四个byte,但是不要指望仅仅改动这4个byte就可以解决问题
解决方法只能是用当初生成pyc的python版本去执行pyc文件

如何查看pycharm中正在运行的python版本(这个是最简单的)


如何ubuntu中查看python版本:直接运行ipython3即可显示

可以一行指令把指定python文件生成pyc文件(使用py_compile模块):python3 -m py_compile testpyc.py
以上代码可以简化成:python3 -m testpyc.py

另附上编译当前目录所有py文件的代码:
#!/usr/bin/env python
# encoding=utf-8
import compileall

def compile_run():
    '''
    将当前目录下的py文件预编译为pyc文件
    :return:
    '''
    compileall.compile_dir(r'./')

if __name__ == '__main__':
    compile_run()

把这些代码生成一个py文件,放在需要的文件夹内,运行就可以了
以上代码完全可以转化成一行命令 python -m compileall ./

有需要的时候可以研究一下pyc文件反编译为py文件(天了噜,还有这种操作,但愿我不会用到,😊😊)

参考资料:
在pycharm中切换pycharm的方法
编译器与解释器
python中的pyc文件
不同版本的python编译出的pyc文件不兼容
知乎:python什么情况下生成pyc文件