继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

python 如何设置多线程

慕斯卡3302699
关注TA
已关注
手记 271
粉丝 58
获赞 314

和多进程的思路类似,我们也可以实现对线程的创建,在Python中,使用threading包实现。参数如下:
构造方法:  
Thread(group=None, target=None, name=None, args=(), kwargs={})

  group: 线程组,目前还没有实现,库引用中提示必须是None;  
  target: 要执行的方法;  
  name: 线程名;  
  args/kwargs: 要传入方法的参数。
示例:

import threading
t = threading.Thread(target=run_thread, args=('fireling', ), name='Run_threadThread')
t.start()
t.join()
但是由于多线程处理任务,往往有些变量由所有线程共享,这种变量叫全局变量,在所有线程中,这种变量只保存一份。所以多线程处理任务,特别是对于全局变量修改的时候,我们往往要加线程锁,保证在对某个全局变量修改的时候,只有一个线程接触到它12

首先要先声明线程锁,

lock = threading.Lock()

在这些线程调用的函数定义中,我们可以加两句话:

lock.acquire() # 获取线程锁xxxxxxxxxxx 此处省略若干代码lock.release() # 释放线程锁

全局锁针对的是所有线程的全局变量,那么我们如果要处理单个线程的局部变量呢?可以用到ThreadLocal方法。

实例方法:  
  isAlive(): 返回线程是否在运行。正在运行指启动后、终止前。  
  get/setName(name): 获取/设置线程名。

    start():  线程准备就绪,等待CPU调度
     is/setDaemon(bool): 获取/设置是后台线程(默认前台线程(False))。(在start之前设置)

  如果是后台线程,主线程执行过程中,后台线程也在进行,主线程执行完毕后,后台线程不论成功与否,主线程和后台线程均停止
      如果是前台线程,主线程执行过程中,前台线程也在进行,主线程执行完毕后,等待前台线程也执行完成后,程序停止
  start(): 启动线程。  
  join([timeout]): 阻塞当前上下文环境的线程,直到调用此方法的线程终止或到达指定的timeout(可选参数)。


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP