python多线程编程2—线程的建设、启动、挂起和退出
当前位置:以往代写 > Python教程 >python多线程编程2—线程的建设、启动、挂起和退出
2019-06-14

python多线程编程2—线程的建设、启动、挂起和退出

python多线程编程2—线程的建设、启动、挂起和退出

如上一节,python的threading.Thread类有一个run要领,用于界说线程的成果函数,可以在本身的线程类中包围该要领。而建设本身的线程实例后,通过Thread类的start要领,可以启动该线程,交给python虚拟机举办调治,当该线程得到执行的时机时,就会挪用run要领执行线程。让我们开始第一个例子:

# encoding: UTF-8
import threading
import time
 
class MyThread(threading.Thread):
    def run(self):
        for i in range(3):
            time.sleep(1)
            msg = "I'm "+self.name+' @ '+str(i)
            print msg
def test():
    for i in range(5):
        t = MyThread()
        t.start()
if __name__ == '__main__':
    test()

执行功效:

I'm Thread-1 @ 0

I'm Thread-2 @ 0

I'm Thread-5 @ 0

I'm Thread-3 @ 0

I'm Thread-4 @ 0

I'm Thread-3 @ 1

I'm Thread-4 @ 1

I'm Thread-5 @ 1

I'm Thread-1 @ 1

I'm Thread-2 @ 1

I'm Thread-4 @ 2

I'm Thread-5 @ 2

I'm Thread-2 @ 2

I'm Thread-1 @ 2

I'm Thread-3 @ 2

从代码和执行功效我们可以看出,多线程措施的执行顺序是不确定的。当执行到sleep语句时,线程将被阻塞(Blocked),到sleep竣事后,线程进入停当(Runnable)状态,期待调治。而线程调治将自行选择一个线程执行。上面的代码中只能担保每个线程都运行完整个run函数,可是线程的启动顺序、run函数中每次轮回的执行顺序都不能确定。

另外需要留意的是:

1.每个线程必然会有一个名字,尽量上面的例子中没有指定线程工具的name,可是python会自动为线程指定一个名字。

2.当线程的run()要领竣事时该线程完成。

3. 无法节制线程调治措施,但可以通过此外方法来影响线程调治的方法。

上面的例子只是简朴的演示了建设了线程、主动挂起以及退出线程。下一节,将接头用互斥锁举办线程同步。

    关键字:

在线提交作业