鱼C论坛

 找回密码
 立即注册
查看: 3657|回复: 2

[技术交流] python标准库之多线程【threading】 第一讲

[复制链接]
发表于 2017-6-6 20:20:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 MSK 于 2017-6-7 14:58 编辑

下一篇:
        后台进程
我们平时的程序都是单线程的,整个程序就像一条线一样执行下去。
如果我们要执行的某个任务需要重复很多次(比如下载一部3000页漫画 ),单线程的效率就一些低下了。

好了,废话不多说

threading模块第一讲:
【*】需要的模块 threading

【*】 创建线程
        方法1:
  1. thread = threading.Thread(target=function,
  2.                           args=None,
  3.                           name=None,
  4.                           kwargs=None,
  5.                           daemon=None)

  6. #target为需要调用(分身)的函数
  7. #args 为该函数的参数,以元组形式传入
  8. #name 为线程的名字,默认值为“Thread-N“,N是一个数字
  9. #kwargs 为该函数的参数,以字典方式传入{'参数':'参数值'}
  10. #daemon 是否设置为后台进程(守护进程),True 或 False
复制代码


        方法二:继承并修改 threading.Thread 类
       
  1. import threading

  2. class My_thread(threading.Thread):
  3.     def __init__(self,name,words):
  4.         #name 为线程名,必须有
  5.         self.words = words
  6.         super().__init__(name = name)  #注意:一定要显式的调用父类的初始化函数。
  7.    
  8.     def run(self):
  9.         '''

  10.         重写父类run方法,在线程启动后执行该方法内的代码。
  11.         
  12.         '''
  13.         
  14.         for i in range(10):
  15.             print(self.words)

  16. thread_1 = My_thread('thread_1','线程1')
  17. thread_2 = My_thread('thread_2','线程2')
  18. thread_1.start()
  19. thread_2.start()

  20. #输出
  21. >>> 线程1线程2

  22. 线程1线程2

  23. 线程1线程2

  24. 线程1线程2

  25. 线程1线程2

  26. 线程1线程2

  27. 线程1线程2

  28. 线程1线程2

  29. 线程1线程2

  30. 线程1线程2
复制代码


#通过掉用start()方法启动线程

【*】获取进程名
以上面为例:
        1.   thread_1.name
        2.   thread_1.getName()

【*】设置进程名
        thread_1.setName('名字')

【*】获取线程的标识符
        Thread.ident
        线程标识符是一个非零整数。
        只有在调用了start()方法之后该属性才有效,否则它只返回None

【*】判断线程是否是激活的(alive)
        Thread.is_alive()
        Thread.isAlive()
        从调用start()方法启动线程,到run()方法执行完毕或遇到未处理异常而中断 这段时间内,线程是激活的

#我发现这样也可以获取到一些线程信息
  1. >>> thread =
  2. def test():
  3.         pass
  4. threading.Thread(target=test)
  5. >>> thread
  6. <Thread(Thread-3, initial)>
  7. >>> thread.start()
  8. >>> thread
  9. <Thread(Thread-3, stopped 26480)>
复制代码

评分

参与人数 4荣誉 +2 鱼币 +15 贡献 +1 收起 理由
逃兵 + 5
wangguohui + 2 + 2 + 1 热爱鱼C^_^
康小泡 + 4
小甲鱼 + 4 支持楼主!

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-6-6 20:23:07 | 显示全部楼层
今天就先写这么多吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-26 03:40:04 | 显示全部楼层
作为刚入门的小白,有些看不大懂,咳咳,多学几个星期再来细看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 21:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表