马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 MSK 于 2017-6-7 14:58 编辑
下一篇:
后台进程
我们平时的程序都是单线程的,整个程序就像一条线一样执行下去。
如果我们要执行的某个任务需要重复很多次(比如下载一部3000页漫画 ),单线程的效率就一些低下了。
好了,废话不多说
threading模块第一讲:
【*】需要的模块 threading
【*】 创建线程
方法1:thread = threading.Thread(target=function,
args=None,
name=None,
kwargs=None,
daemon=None)
#target为需要调用(分身)的函数
#args 为该函数的参数,以元组形式传入
#name 为线程的名字,默认值为“Thread-N“,N是一个数字
#kwargs 为该函数的参数,以字典方式传入{'参数':'参数值'}
#daemon 是否设置为后台进程(守护进程),True 或 False
方法二:继承并修改 threading.Thread 类
import threading
class My_thread(threading.Thread):
def __init__(self,name,words):
#name 为线程名,必须有
self.words = words
super().__init__(name = name) #注意:一定要显式的调用父类的初始化函数。
def run(self):
'''
重写父类run方法,在线程启动后执行该方法内的代码。
'''
for i in range(10):
print(self.words)
thread_1 = My_thread('thread_1','线程1')
thread_2 = My_thread('thread_2','线程2')
thread_1.start()
thread_2.start()
#输出
>>> 线程1线程2
线程1线程2
线程1线程2
线程1线程2
线程1线程2
线程1线程2
线程1线程2
线程1线程2
线程1线程2
线程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()方法执行完毕或遇到未处理异常而中断 这段时间内,线程是激活的
#我发现这样也可以获取到一些线程信息>>> thread =
def test():
pass
threading.Thread(target=test)
>>> thread
<Thread(Thread-3, initial)>
>>> thread.start()
>>> thread
<Thread(Thread-3, stopped 26480)>
|