多线程threading

多线程模块threading,用threading.Thread(target=函数名)创建一个多线程实例,调用实例的start()方法时创建子线程:

import time
import threading

def test():
    for i in range(5):
        print(i)
        time.sleep(1)


a = threading.Thread(target=test)
b = threading.Thread(target=test)
a.start()
b.start()

 

可以创建一个类,使它继承threading.Thread,那么可以创建一个此类的实例,实例可以调用start()方法,但是注意,类中的方法名必须是run,因为start方法会自动调用run方法

import time
import threading

class aa(threading.Thread):
    def run(self):
        for i in range(5):
            print("hello")
            time.sleep(1)

w = aa()
w.start()

再来一个例子,当一个函数比较复杂,可以用多个函数实现,然后封装到一个类中,就可以用此类继承threading.Thread,然后创建类实例后,调用类实例的start()方法,start()方法则调用类实例中的run()方法,以此来创建子线程:

import time
import threading

class test(threading.Thread):
    def __init__(self,name):
        super().__init__()
        self.name = name

    def run(self):
        print(self.name)

w = test("xiaoming")
w.start()

创建了多个线程之后,线程的执行并不一定是按顺序的

创建一个多线程实例:xxx = threading.Thread(target=xxx, args=(xxx,)),target=xxx,xxx是要创建线程的函数名,args=(xxx,),args中的xxx是函数中的参数,args接收的是一个元组,所以如果只有一个参数的时候,需要在后面加个逗号:

import threading

def test(haha):
    print(haha)

a = threading.Thread(target=test,args=("abc",))
a.start()

 至于使用类继承多线程,参数传递没有什么不同,如下:

import threading

class test(threading.Thread):
    def __init__(self,name):
        super().__init__()
        self.name = name

    def run(self):
        print(self.name)

a
= test("xiao") a.start()

 

posted @ 2019-01-04 12:39  greenfan  阅读(116)  评论(0)    收藏  举报