为了账号安全,请及时绑定邮箱和手机立即绑定

python 如何设置多线程

标签:
Python

和多进程的思路类似,我们也可以实现对线程的创建,在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(可选参数)。


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消