首页 资讯 社群 我的社区 搜索

Python 3基础教程-threading和创建一个线程

木子
2018-10-12 15:19:36

       前面几篇是介绍tkinter GUI编程的,我想这个有时间得出一个系列的,比较完整能够入门的教程。好了本文介绍threading模块,中文的意思是线程。要说线程,你第一反应应该是听说过进程。在电脑里,强制关闭那个程序,就要杀掉哪个对应的进程。作为测试人员来讲,线程基本上没有接触过的。我也没有线程的相关基础知识,我一开始去百度百科,看了下线程。说线程是一个轻量级的进程,多个线程共享进程的资源。线程是CPU能够调度的最小单位,等等,这些概念,把我搞晕,无从下手的感觉。

       1. 什么是线程

       这里不说专业计算机词语解释,举例来解释线程。一份工作,可以一个人,给他足够时间,他一定能够完成;也可以找多个人,短期内完成。这里一个人人干完一个或,就好比单线程工作模式,多个人同时干完一份工作,就叫多线程模式,只是在多线程模式下,一个任务被划分成多个子任务,然后这些子任务分别被不同的线程给完成了。关于线程我们就先通过这样通俗解释,理解就好。我们先不管多线程,先学习下单线程。

       2. 先了解一个概念

   import threading



def exampleFun():

# 打印当前激活的线程数量
print(threading.active_count())

# 查看上面激活的线程是哪几个
print(threading.enumerate())

# 调用函数执行
exampleFun()


       我们在使用线程之前,需要导入相关lib,这个lib我们用threading。上面我们先了解线程的两个函数,第一个是计算当前一共有多少个激活的线程,第二个方法是显示激活线程是那些。运行一下,看下结果输出。

2
[<_MainThread(MainThread, started 5548)>, <Thread(SockThread, started daemon 5768)>]
>>>


       1)显示我当前有两个激活的线程。

       2)打印这两个激活线程,_MainThread,表示一个主线程,后面第二个是这个主线程的子线程,多个线程中,只能有一个主线程。

       3. 如何创建一个线程

import threading


def exampleFuc():
added_thread = threading.Thread(target=thread_job)
added_thread.start()


def thread_job():
print('这是一个添加的线程,系列号是%s' % threading.current_thread())


exampleFuc()


       上面的exampleFuc()是一个普通函数,这个函数里面创建了一个线程,可以创建多个,定义了哪个线程干什么工作。target=thread_job,thread_job是我们定义的一个具体干活的函数,target就是目标,这里就是告诉这个新建的线程,需要做什么工作。记住,不要写成这样target=thread_job(),这里带了小括号是不对的。thread.start(),表示运行这个线程。这里,执行了一次线程,就打印一次线程的名称。效果如下

这是一个添加的线程,系列号是<Thread(Thread-1, started 5164)>


用户评论