简单创建多线程

来源:互联网 发布:微星显卡保修几年 淘宝 编辑:程序博客网 时间:2024/05/01 15:45

0. 导入多线程模块

import threading

1. 方法开启多线程

先将执行操作定义到方法内部

def test(name):    for value in range(5):        print('thread:{}\tcount:{}'.format(name,value))


多线程开启方法执行

threading._start_new_thread(test,('one',))threading._start_new_thread(test,('two',))threading._start_new_thread(test,('three',))

注意:括号两个参数,第一个是方法对象,第二个是参数元组

当元组内部只有一个元素时,后面需要添加逗号,和小括号进行区分

执行结果

thread:onecount:0thread:threecount:0thread:twocount:0thread:onecount:1thread:threecount:1thread:twocount:1thread:onecount:2thread:threecount:2thread:twocount:2thread:onecount:3thread:threecount:3thread:twocount:3thread:onecount:4thread:threecount:4thread:twocount:4

注意:当程序主线程执行完毕,子线程会被终止,所以需要让主线程睡一会(目前我的程度只能这样)


import timetime.sleep(2)

线程对象

和普通对象区别在于两点

0. 类:继承threading.Thread对象

1. 方法:

__init__:初始化方法必须调用父类方法初始化,才能进行本类初始化操作,父类初始化不带外参

run:开启线程操作主要完成的操作语句在此定义

2. 调用:start准备,后续自动调用,遵循线程生命周期

import threadingimport timeclass MyHead(threading.Thread):    def __init__(self,name):        super(MyHead, self).__init__()        self.name = name    def run(self):        for value in range(5):            print('thread:{}\tcount:{}'.format(self.name,value))thread1 = MyHead('one')thread2 = MyHead('two')thread1.start()thread2.start()

线程对象会自动自行完毕,再关闭主线程,无需sleep

结果:

thread:onecount:0thread:onecount:1thread:onecount:2thread:twocount:0thread:onecount:3thread:onecount:4thread:twocount:1thread:twocount:2thread:twocount:3thread:twocount:4


原创粉丝点击