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. 无法控制线程调度程序,但能够经过其他办法来影响线程调度的办法。

上面的比如仅仅简略的演示了创立了线程、自动挂起以及退出线程。下一节,将评论用互斥锁进行线程同步。


上一篇:python多线程编程1— python对多线程的支撑
下一篇:Go 言语编写 CPython 扩展 goPy

PythonTab微信大众号:

Python技能交流合作群 ( 请勿加多个群 ):

群1: 87464755

群2: 333646237

群3: 318130924

群4: 385100854