SlideShare a Scribd company logo
北京迅达云成科技有限公司 www.speedycloud.cn
北京迅达云成科技有限公司
www.speedycloud.cn
2015年9月 北京
WELCOME
浅析python多线程与多进程的使用
北京迅达云成科技有限公司 www.speedycloud.cn
为何要用多线程?
提高效率
北京迅达云成科技有限公司 www.speedycloud.cn
多线程 多进程
Code
Review
北京迅达云成科技有限公司 www.speedycloud.cn
上 当 了!
北京迅达云成科技有限公司 www.speedycloud.cn
什么是GIL?
In C-python, the global interpreter lock, or GIL, is a mutex that
prevents multiple native threads from executing Python byte-codes at
once. This lock is necessary mainly because C-Python’s memory
management is not thread-safe.(However, since the GIL exists, other
features have grown to depend on the guarantees that it enforces.)
GIL将会序列化线程,从而阻止线程并发
北京迅达云成科技有限公司 www.speedycloud.cn
多线程测试
北京迅达云成科技有限公司 www.speedycloud.cn
难道python多线程就没有一点卵用?
非 也
北京迅达云成科技有限公司 www.speedycloud.cn
好消息是
I/O密集型:
北京迅达云成科技有限公司 www.speedycloud.cn
IO 密集型执行时序图
北京迅达云成科技有限公司 www.speedycloud.cn
不幸的是
CPU密集型任务:多线程效率往往比单线程还低
北京迅达云成科技有限公司 www.speedycloud.cn
怎么破?
第一招
Ctypes
北京迅达云成科技有限公司 www.speedycloud.cn
怎么破?
第二招
multiprocessing
号外:multiprocessing.dummy
北京迅达云成科技有限公司 www.speedycloud.cn
踩过的坑
Join()
北京迅达云成科技有限公司 www.speedycloud.cn
踩过的坑
file discripter
在linux内,对所有设备或者文件的操作都是通过文件描述符进行
的
北京迅达云成科技有限公司 www.speedycloud.cn
北京迅达云成科技有限公司 www.speedycloud.cn
Thanks!
北京迅达云成科技有限公司
地址:北京市朝阳区酒仙桥路12号电子城科技大厦1112
网址:www.speedycloud.cn
电话: 400-6911-816

More Related Content

Viewers also liked

深入Docker的资源管理
深入Docker的资源管理深入Docker的资源管理
深入Docker的资源管理
SpeedyCloud
 
Bloomingdales
BloomingdalesBloomingdales
Bloomingdales
Simran Parmar
 
Harlequin and the infinite space
Harlequin and the infinite spaceHarlequin and the infinite space
Harlequin and the infinite space
June katz
 
New Series and follow up on previous series
New Series and follow up on previous seriesNew Series and follow up on previous series
New Series and follow up on previous seriesJune katz
 
SpeedyCloud 云计算平台资源调度系统要点解析
SpeedyCloud 云计算平台资源调度系统要点解析SpeedyCloud 云计算平台资源调度系统要点解析
SpeedyCloud 云计算平台资源调度系统要点解析
SpeedyCloud
 
选型指南:Cdn系统中dns的设计与研发
选型指南:Cdn系统中dns的设计与研发选型指南:Cdn系统中dns的设计与研发
选型指南:Cdn系统中dns的设计与研发
SpeedyCloud
 
运维?KVM & OpenVZ & Docker
运维?KVM & OpenVZ & Docker运维?KVM & OpenVZ & Docker
运维?KVM & OpenVZ & Docker
SpeedyCloud
 
When In Rome (2010)
When In Rome (2010)When In Rome (2010)
When In Rome (2010)
nughinafiqah
 
Fashion forecasting
Fashion forecastingFashion forecasting
Fashion forecasting
Simran Parmar
 
Ahmed Kamal CV
Ahmed Kamal CVAhmed Kamal CV
Ahmed Kamal CV
Ahmed Kamal
 
How to Use Multi-thread & Multi-process in Python
How to Use Multi-thread & Multi-process in PythonHow to Use Multi-thread & Multi-process in Python
How to Use Multi-thread & Multi-process in Python
SpeedyCloud
 
Resource Management of Docker
Resource Management of DockerResource Management of Docker
Resource Management of Docker
SpeedyCloud
 
Modelo atómico demócrito
Modelo atómico demócritoModelo atómico demócrito
Modelo atómico demócrito
Tomas Echeverri Salazar
 
教育交互直播的技术难点与架构探索 @ 见云沙龙
教育交互直播的技术难点与架构探索 @ 见云沙龙教育交互直播的技术难点与架构探索 @ 见云沙龙
教育交互直播的技术难点与架构探索 @ 见云沙龙
SpeedyCloud
 

Viewers also liked (14)

深入Docker的资源管理
深入Docker的资源管理深入Docker的资源管理
深入Docker的资源管理
 
Bloomingdales
BloomingdalesBloomingdales
Bloomingdales
 
Harlequin and the infinite space
Harlequin and the infinite spaceHarlequin and the infinite space
Harlequin and the infinite space
 
New Series and follow up on previous series
New Series and follow up on previous seriesNew Series and follow up on previous series
New Series and follow up on previous series
 
SpeedyCloud 云计算平台资源调度系统要点解析
SpeedyCloud 云计算平台资源调度系统要点解析SpeedyCloud 云计算平台资源调度系统要点解析
SpeedyCloud 云计算平台资源调度系统要点解析
 
选型指南:Cdn系统中dns的设计与研发
选型指南:Cdn系统中dns的设计与研发选型指南:Cdn系统中dns的设计与研发
选型指南:Cdn系统中dns的设计与研发
 
运维?KVM & OpenVZ & Docker
运维?KVM & OpenVZ & Docker运维?KVM & OpenVZ & Docker
运维?KVM & OpenVZ & Docker
 
When In Rome (2010)
When In Rome (2010)When In Rome (2010)
When In Rome (2010)
 
Fashion forecasting
Fashion forecastingFashion forecasting
Fashion forecasting
 
Ahmed Kamal CV
Ahmed Kamal CVAhmed Kamal CV
Ahmed Kamal CV
 
How to Use Multi-thread & Multi-process in Python
How to Use Multi-thread & Multi-process in PythonHow to Use Multi-thread & Multi-process in Python
How to Use Multi-thread & Multi-process in Python
 
Resource Management of Docker
Resource Management of DockerResource Management of Docker
Resource Management of Docker
 
Modelo atómico demócrito
Modelo atómico demócritoModelo atómico demócrito
Modelo atómico demócrito
 
教育交互直播的技术难点与架构探索 @ 见云沙龙
教育交互直播的技术难点与架构探索 @ 见云沙龙教育交互直播的技术难点与架构探索 @ 见云沙龙
教育交互直播的技术难点与架构探索 @ 见云沙龙
 

Similar to 浅析Python多线程与多进程的使用

用简单语言构建复杂系统
用简单语言构建复杂系统用简单语言构建复杂系统
用简单语言构建复杂系统
Leo Zhou
 
Python meetup 1
Python meetup 1Python meetup 1
Python meetup 1
Vic Yang
 
Pyramid框架介绍
Pyramid框架介绍Pyramid框架介绍
Pyramid框架介绍
panjunyong
 
Python&GUI
Python&GUIPython&GUI
Python&GUI
Leo Zhou
 
從 GitHub Copilot 到 Enterprise Copilot:打造符合企業需求的智能開發助手之路 | .NET Conf 2023 Taiwan
從 GitHub Copilot 到 Enterprise Copilot:打造符合企業需求的智能開發助手之路 | .NET Conf 2023 Taiwan從 GitHub Copilot 到 Enterprise Copilot:打造符合企業需求的智能開發助手之路 | .NET Conf 2023 Taiwan
從 GitHub Copilot 到 Enterprise Copilot:打造符合企業需求的智能開發助手之路 | .NET Conf 2023 Taiwan
Alan Tsai
 
基于Python构建可扩展的自动化运维平台
基于Python构建可扩展的自动化运维平台基于Python构建可扩展的自动化运维平台
基于Python构建可扩展的自动化运维平台
liuts
 
Cygwin intro
Cygwin introCygwin intro
Cygwin introcri fan
 
Cygwin intro
Cygwin introCygwin intro
Cygwin introcri fan
 
由BrickPi實現半自動循機車
由BrickPi實現半自動循機車由BrickPi實現半自動循機車
由BrickPi實現半自動循機車
AStar CHEN
 
GitLab Auto DevOps 大解析—CI/CD 原來可以這樣做
GitLab Auto DevOps 大解析—CI/CD 原來可以這樣做GitLab Auto DevOps 大解析—CI/CD 原來可以這樣做
GitLab Auto DevOps 大解析—CI/CD 原來可以這樣做
Chen Cheng-Wei
 
Ryu Learning Guide
Ryu Learning GuideRyu Learning Guide
Ryu Learning Guide
呈 李
 
容器與 Gitlab CI 應用
容器與 Gitlab CI 應用容器與 Gitlab CI 應用
容器與 Gitlab CI 應用
Philip Zheng
 
Python的module机制与最佳实践
Python的module机制与最佳实践Python的module机制与最佳实践
Python的module机制与最佳实践
Leo Zhou
 
Spring boot 简介
Spring boot 简介Spring boot 简介
Spring boot 简介
宇帆 盛
 
How to integrate GitLab CICD into B2B service
How to integrate GitLab CICD into B2B serviceHow to integrate GitLab CICD into B2B service
How to integrate GitLab CICD into B2B service
Alex Su
 
Clojure cnclojure-meetup
Clojure cnclojure-meetupClojure cnclojure-meetup
Clojure cnclojure-meetupsunng87
 
CICD Workshop 20180922
CICD Workshop 20180922CICD Workshop 20180922
CICD Workshop 20180922
Earou Huang
 
智慧製造認識與導入基礎 ::Python三小時速戰班
智慧製造認識與導入基礎::Python三小時速戰班智慧製造認識與導入基礎::Python三小時速戰班
智慧製造認識與導入基礎 ::Python三小時速戰班
小均 張
 
用 Go 語言 打造微服務架構
用 Go 語言打造微服務架構用 Go 語言打造微服務架構
用 Go 語言 打造微服務架構
Bo-Yi Wu
 
Python beginner tutorial
Python beginner tutorialPython beginner tutorial
Python beginner tutorialcri fan
 

Similar to 浅析Python多线程与多进程的使用 (20)

用简单语言构建复杂系统
用简单语言构建复杂系统用简单语言构建复杂系统
用简单语言构建复杂系统
 
Python meetup 1
Python meetup 1Python meetup 1
Python meetup 1
 
Pyramid框架介绍
Pyramid框架介绍Pyramid框架介绍
Pyramid框架介绍
 
Python&GUI
Python&GUIPython&GUI
Python&GUI
 
從 GitHub Copilot 到 Enterprise Copilot:打造符合企業需求的智能開發助手之路 | .NET Conf 2023 Taiwan
從 GitHub Copilot 到 Enterprise Copilot:打造符合企業需求的智能開發助手之路 | .NET Conf 2023 Taiwan從 GitHub Copilot 到 Enterprise Copilot:打造符合企業需求的智能開發助手之路 | .NET Conf 2023 Taiwan
從 GitHub Copilot 到 Enterprise Copilot:打造符合企業需求的智能開發助手之路 | .NET Conf 2023 Taiwan
 
基于Python构建可扩展的自动化运维平台
基于Python构建可扩展的自动化运维平台基于Python构建可扩展的自动化运维平台
基于Python构建可扩展的自动化运维平台
 
Cygwin intro
Cygwin introCygwin intro
Cygwin intro
 
Cygwin intro
Cygwin introCygwin intro
Cygwin intro
 
由BrickPi實現半自動循機車
由BrickPi實現半自動循機車由BrickPi實現半自動循機車
由BrickPi實現半自動循機車
 
GitLab Auto DevOps 大解析—CI/CD 原來可以這樣做
GitLab Auto DevOps 大解析—CI/CD 原來可以這樣做GitLab Auto DevOps 大解析—CI/CD 原來可以這樣做
GitLab Auto DevOps 大解析—CI/CD 原來可以這樣做
 
Ryu Learning Guide
Ryu Learning GuideRyu Learning Guide
Ryu Learning Guide
 
容器與 Gitlab CI 應用
容器與 Gitlab CI 應用容器與 Gitlab CI 應用
容器與 Gitlab CI 應用
 
Python的module机制与最佳实践
Python的module机制与最佳实践Python的module机制与最佳实践
Python的module机制与最佳实践
 
Spring boot 简介
Spring boot 简介Spring boot 简介
Spring boot 简介
 
How to integrate GitLab CICD into B2B service
How to integrate GitLab CICD into B2B serviceHow to integrate GitLab CICD into B2B service
How to integrate GitLab CICD into B2B service
 
Clojure cnclojure-meetup
Clojure cnclojure-meetupClojure cnclojure-meetup
Clojure cnclojure-meetup
 
CICD Workshop 20180922
CICD Workshop 20180922CICD Workshop 20180922
CICD Workshop 20180922
 
智慧製造認識與導入基礎 ::Python三小時速戰班
智慧製造認識與導入基礎::Python三小時速戰班智慧製造認識與導入基礎::Python三小時速戰班
智慧製造認識與導入基礎 ::Python三小時速戰班
 
用 Go 語言 打造微服務架構
用 Go 語言打造微服務架構用 Go 語言打造微服務架構
用 Go 語言 打造微服務架構
 
Python beginner tutorial
Python beginner tutorialPython beginner tutorial
Python beginner tutorial
 

浅析Python多线程与多进程的使用