파이썬 스레드를 만들 수있는 몇 가지 방법

Thread 클래스를 사용하는 것은 생성

import threading
from time import sleep,ctime

def sing():
    for i in range(3):
        print("正在唱歌...%d"%i)
        sleep(1)

def dance():
    for i in range(3):
        print("正在跳舞...%d"%i)
        sleep(1)

if __name__ == '__main__':
    print('---开始---:%s'%ctime())

    t1 = threading.Thread(target=sing)
    t2 = threading.Thread(target=dance)

    t1.start()
    t2.start()

    #sleep(5) # 屏蔽此行代码,试试看,程序是否会立马结束?
    print('---结束---:%s'%ctime())
"""
输出结果:
---开始---:Sat Aug 24 08:44:21 2019
正在唱歌...0
正在跳舞...0---结束---:Sat Aug 24 08:44:21 2019
正在唱歌...1
正在跳舞...1
正在唱歌...2
正在跳舞...2
"""

설명 : 메인 스레드가 모든 하위 스레드의 종료 후 말을 기다립니다

서브 클래스의 스레드를 사용하여

각 스레드의 패키지가 더 완벽하게, 그래서 스레딩 모듈을 사용하는 경우, 그냥에 threading.Thread을 상속 클래스의 새로운 서브 클래스를 정의하는 경향하려면 다음 실행 메소드를 오버라이드 (override).

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) #name属性中保存的是当前线程的名字
            print(msg)


if __name__ == '__main__':
    t = MyThread()
    t.start()
"""
输出结果:
I'm Thread-5 @ 0
I'm Thread-5 @ 1
I'm Thread-5 @ 2
"""

스레드 풀에있는 ThreadPoolExecutor를 작성합니다

from concurrent.futures import ThreadPoolExecutor
import time
import os


def sayhello(a):
    for i in range(10):
        time.sleep(1)
        print("hello: " + a)


def main():
    seed = ["a", "b", "c"]
    # 最大线程数为3,使用with可以自动关闭线程池,简化操作
    with ThreadPoolExecutor(3) as executor:
        for each in seed: 
            # map可以保证输出的顺序, submit输出的顺序是乱的
            executor.submit(sayhello, each)

    print("主线程结束")


if __name__ == '__main__':
    main()

추천

출처www.cnblogs.com/lxy0/p/11403555.html