郑文峰的博客 郑文峰的博客
首页
  • python之路
  • go之路
  • 其他
  • redis
  • mysql
  • docker
  • k8s
读书破万卷
周刊
关于
  • 导航 (opens new window)
  • 代码片段 (opens new window)
  • 收藏
  • 友链
  • 外部页面

    • 开往 (opens new window)
  • 索引

    • 分类
    • 标签
    • 归档
GitHub (opens new window)

zhengwenfeng

穷则变,变则通,通则久
首页
  • python之路
  • go之路
  • 其他
  • redis
  • mysql
  • docker
  • k8s
读书破万卷
周刊
关于
  • 导航 (opens new window)
  • 代码片段 (opens new window)
  • 收藏
  • 友链
  • 外部页面

    • 开往 (opens new window)
  • 索引

    • 分类
    • 标签
    • 归档
GitHub (opens new window)
  • 学习周刊-第01期-第07周
  • 学习周刊-第02期-第08周
  • 学习周刊-第03期-第09周
    • 前言
    • 工具
    • 项目
    • 文章
  • 周刊
zhengwenfeng
2023-03-03
目录

学习周刊-第03期-第09周

# 前言

本周刊每周五发送,主要内容是我在每周看到的有价值的信息,目的是希望自己加强对优秀的内容深入的理解,另一方面好的内容想要分享出来,让更多的人看到。

# 工具

  • 91化简 (opens new window)

一个免费制作简历的平台

  • 免费API (opens new window)

包含了上百项免费 API 提供使用。

# 项目

  • memos (opens new window)

开源的私人博客,类似于 flomo,通过 docker 可以快速部署。

  • code-statistic (opens new window)

可以用来统计 github 上用户或者仓库的信息,可以通过超链接来展示。

# 文章

  • Processes Are About 40x Slower Than Threads in Python(进程比 Python 中的线程慢大约 40 倍) (opens new window)

python 有三种启动进程的方式:

  1. spawn,父进程启动一个新的 Python 解析器,只继承 run 方法中需要的资源。
  2. fork,使用 os.fork 系统调用启动一个 Python 解析器,继承父进程的所有资源,但是如果父进程是多线程,fork 时有死锁的风险,详情参考:Why your multiprocessing Pool is stuck (opens new window) ,多线程不会被复制到子进程中。
  3. forkserver,向 fork server 发送指令,由它 os.fork 子进程,而该 fork server 是单线程,所有无该风险。

参考资料: python多进程实战 (opens new window) multiprocessing (opens new window)

作者使用 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 (opens new window)

作者做一个在 python 中比较进程和线程在共享数据方面的速度实验。

通过创建线程池和进程池排除创建进程和线程因素,又通过使用基本相同的 API 方式实现,减少其他因素的影响。

结论是线程传输数据的速度比进程快近 4 倍。原因也很简单,线程可以共享内存,而进程需要通过序列化、传输、接收、反序列化这些过程,增加了计算上的开销。

  • 你好 ChatGPT, 帮我看下这段代码有什么问题? (opens new window)

作者通过 ChatGPT 来排查 java 代码中的 Bug

  • No one cares (opens new window)

没有人关心你是谁,你知道什么,你创造了什么。人们忙于自己的生活。他们迷失在自己的世界里。

你发行了世界上最棒的音乐专辑?没人在乎。

你花了两年时间写小说?没人在乎。

你制作了一个很棒的应用程序来解决一个大问题?没有人...

这正是营销的用武之地。

我们需要学会推销自己的产品,这是我们要解决的问题。

上次更新: 2023/03/03, 02:15:41
学习周刊-第02期-第08周

← 学习周刊-第02期-第08周

最近更新
01
django rest_framework 分页
03-20
02
学习周刊-第02期-第08周
02-24
03
django后端服务、logstash和flink接入VictoriaMetrics指标监控
02-21
更多文章>
Theme by Vdoing | Copyright © 2022-2023 zhengwenfeng | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式