Python中的多线程及其基本使用方法

学习Python的多线程(Multi-threading),至少应该要有进程与线程的基本概念,可以看我转载的一篇文章:http://blog.csdn.net/dongfei2033/article/details/77871710

1.Python中的多线程

    执行一个程序,即在操作系统中开启了一个进程,在某一时刻,一个CPU内核只能进行一个进程的任务,现在的计算机所说的多进程/多任务其实是通过加快CPU的执行速度来实现的,因为一个CPU每秒能执行上亿次的计算,能够对进程进行很多次切换,所以在人为可以感知的时间里,看上去,计算机确实是在同时执行多个程序,即同时处理多个进程。

    一个进程中可以包含有多个线程,这多个线程为实现该进程的某个主要功能而运行着,多个线程可以进行串行工作,也可以并发同时进行工作,显然后者可以节省更多的时间。

    在Python中是支持多线程并发执行的,只是Python中的多线程只能利用单核,也就是说Python中的某一个进程的多个线程只能在一个CPU核心上运行,而不能分配在多个CPU核心中运行,这是考虑到线程安全的缘故,而Python中的GIL则保证了线程安全。关于Python中的GIL,可以参考下面一篇文章:《浅析Python的GIL和线程安全》。http://developer.51cto.com/art/200910/156804.htm

   下面是自己在学习过程中的一些课堂笔记,因为还没有真正学习一些理论,所以可能会有些错误,但目前是方便自己的理解:

1
2
3
4
5
6
7
8
9
即GLI是以CPU核心为单位来控制全局锁,所以是不能跨不同的CPU(核心 )的
GLI可以保证同一个进程中,某一个线程的共享数据在某一时刻只能同时被另外一个线程修改(使用),
而不能同时被多个线程修改(使用),如果去掉GLI,则需要自己为线程加锁,这样之后,性能比原来还要差。
当然,难道就不能充分利用多核CPU或多个CPU了?
做成多进程就可以了,不同的进程运行在不同的CPU(核心)上,也可以实现并发,
只是这样的话就会比较浪费内存空间,考虑同时运行 10 个QQ程序的情况,
假如 1 个QQ占用500M的内存空间,则 10 个QQ就要占用5G的内存空间了。但如果是多线程的话,
可能 10 个QQ还是共享着这500M的内存空间。还有一个缺点就是,多进程间的数据直接访问可能
会比较麻烦,但其实也是可以实现的,比如chrome浏览器就是用多进程实现的。

     目前首先要明确的是,Python中是不能把一个进程的多个线程分布在不同的CPU核心上运行的。

2.Python多线程使用方法1

    给出下面的程序代码及注释:

1
2
3
4
5
6
7
8
9
10
import  threading    #Python多线程模块
import  time
 
def run(num):
     print  'Hi, I am thread %s..lalala'  % num
     time.sleep( 1 )
 
for  in 
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值