Python多进程编程-开篇
2018-01-04 17:45
274 查看
多进程和多线程的区别:
Python在多线程编程上比较鸡肋。并发和性能比较差。
Python有一个全局解释锁(GIL)的存在,同一个时间点只允许一个线程在运行
想要同一时间点多个程序在cpu上运行,必须要用多进程编程了。
cpu密集型推荐使用多进程编程
IO密集型:比如程序要频繁地和数据库打交道,或者频繁地读写文件。使用多线程编程。
线程开销比进程开销小得多的原因:
进程所占用的内存空间
1.文本区域
2.数据区域
3.堆栈区域
新的进程重新创建三个区域
而新的线程可以复用进程的文本区域和数据区域
所以线程开销比进程开销小的多。
进程和进程之间是相互独立的,互不干涉。
实例代码:
执行结果:
Python在多线程编程上比较鸡肋。并发和性能比较差。
Python有一个全局解释锁(GIL)的存在,同一个时间点只允许一个线程在运行
想要同一时间点多个程序在cpu上运行,必须要用多进程编程了。
cpu密集型推荐使用多进程编程
IO密集型:比如程序要频繁地和数据库打交道,或者频繁地读写文件。使用多线程编程。
线程开销比进程开销小得多的原因:
进程所占用的内存空间
1.文本区域
2.数据区域
3.堆栈区域
新的进程重新创建三个区域
而新的线程可以复用进程的文本区域和数据区域
所以线程开销比进程开销小的多。
进程和进程之间是相互独立的,互不干涉。
实例代码:
import multiprocessing count=0 def func1(): global count count += 10 print count#10 if __name__ == '__main__': plist=[] for i in xrange(10):#创建了10个进程,每个进程创建一个自己的区域空间,copy了10份count=0的值,没有操作到主进程的count值 p=multiprocessing.Process(target=func1) plist.append(p) for p in plist: p.start() for p in plist: p.join() print count#0
执行结果:
10 10 10 10 10 10 10 10 10 10 0
相关文章推荐
- Python网络编程之线程与进程
- Python并发编程之进程
- 初步解析Python下的多进程编程
- 使用Python进行多进程编程
- 使用Python进行多进程编程
- Python并发编程之进程
- windows及linux下使用python多进程编程
- python中多进程编程
- Python系统编程--进程
- [Python网络编程]浅析守护进程后台任务的设计与实现
- python使用deco进行多进程编程
- Python并发编程之进程
- 深入理解python多进程编程
- python 系统编程之创建进程 create process
- Python进阶(4)_进程与线程 (python并发编程之多进程)
- Python编程-多道技术和进程
- Python多进程编程技术实例分析
- Python基础(七)系统编程之进程-fork
- Python并发编程之进程
- Python多进程编程