前言
本周刊每周五发送,主要内容是我在每周看到的有价值的信息,目的是希望自己加强对优秀的内容深入的理解,另一方面好的内容想要分享出来,让更多的人看到。
工具
• 91化简[1]
一个免费制作简历的平台
• 免费API[2]
包含了上百项免费 API 提供使用。
项目
• memos[3]
开源的私人博客,类似于 flomo,通过 docker 可以快速部署。
• code-statistic[4]
可以用来统计 github 上用户或者仓库的信息,可以通过超链接来展示。
文章
• Processes Are About 40x Slower Than Threads in Python(进程比 Python 中的线程慢大约 40 倍)[5]
python 有三种启动进程的方式:
1. spawn,父进程启动一个新的 Python 解析器,只继承 run 方法中需要的资源。
2. fork,使用
os.fork
系统调用启动一个 Python 解析器,继承父进程的所有资源,但是如果父进程是多线程,fork 时有死锁的风险,详情参考:Why your multiprocessing Pool is stuck[6] ,多线程不会被复制到子进程中。3. forkserver,向
fork server
发送指令,由它os.fork
子进程,而该fork server
是单线程,所以无该风险。
参考资料: python多进程实战[7] multiprocessing[8]
作者使用 spawn 和 fork 两种方式创建 1000 个进程进行耗时测试,然后再创建 1000 个线程测试,结果如下:
| 方式 | 总共耗时 | 平均耗时 |
| spawn 方式进程 | 42.3 秒 | 42.3 毫秒 |
| fork 方式进程 | 2.07 秒 | 2.07 毫秒 |
| 线程 | 0.048 秒 | 4.8e-05 秒(0.000048) |
结论:
1. fork 要比 spawn 方式创建进程的速度要快 20 倍
2. 创建线程比 fork 进程速度快 43 倍
3. 如果程序需要创建许多的并发,考虑使用线程而不是进程,但是只适合 I/O 密集型任务。
• Threads are 4x Faster at Sharing Data Than Processes in Python[9]
作者做一个在 python 中比较进程和线程在共享数据方面的速度实验。
通过创建线程池和进程池排除创建进程和线程因素,又通过使用基本相同的 API 方式实现,减少其他因素的影响。
结论是线程传输数据的速度比进程快近 4 倍。原因也很简单,线程可以共享内存,而进程需要通过序列化、传输、接收、反序列化这些过程,增加了计算上的开销。
• 你好 ChatGPT, 帮我看下这段代码有什么问题?[10]
作者通过 ChatGPT 来排查 java 代码中的 Bug
• No one cares[11]
没有人关心你是谁,你知道什么,你创造了什么。人们忙于自己的生活。他们迷失在自己的世界里。
你发行了世界上最棒的音乐专辑?没人在乎。
你花了两年时间写小说?没人在乎。
你制作了一个很棒的应用程序来解决一个大问题?没有人...
这正是营销的用武之地。
我们需要学会推销自己的产品,这是我们要解决的问题。
引用链接
[1]
91化简: https://91huajian.cn/[2]
免费API: https://api.aa1.cn/[3]
memos: https://github.com/usememos/memos[4]
code-statistic: https://github.com/zmh-program/code-statistic[5]
Processes Are About 40x Slower Than Threads in Python(进程比 Python 中的线程慢大约 40 倍): https://superfastpython.com/processes-slower-than-threads/[6]
Why your multiprocessing Pool is stuck: https://pythonspeed.com/articles/python-multiprocessing/[7]
python多进程实战: https://jeremyxu2010.github.io/2020/09/python%E5%A4%9A%E8%BF%9B%E7%A8%8B%E5%AE%9E%E6%88%98/[8]
multiprocessing: https://docs.python.org/zh-cn/3/library/multiprocessing.html[9]
Threads are 4x Faster at Sharing Data Than Processes in Python: https://superfastpython.com/threads-vs-processes-share-data/[10]
你好 ChatGPT, 帮我看下这段代码有什么问题?: https://www.wdbyte.com/java/chatgpt-files-list.html[11]
No one cares: https://rohit.blog/care/





