Python 實現多線程的幾種方式


threading.Thread 模塊  

繼承實現:

import threading
import time


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

    def run(self):
        print('線程%s 開始' % self.name)
        time.sleep(5)
        print('線程%s 結束' % self.name)


def main():
    threads = []
    thread_name = ['1', '2', '3']
    for name in thread_name:
        t = TestThread(name)
        threads.append(t)
    for thread in threads:
        thread.start()      # 啟動線程
    for thread in threads:
        thread.join()       # 阻塞主線程


if __name__ == '__main__':
    main()

函數實現: 

import threading
import time


def main(name):
    print('線程%s 開始' % name)
    time.sleep(5)
    print('線程%s 結束' % name)


if __name__ == '__main__':
    threads = []
    thread_name = ['1', '2', '3']
    for name in thread_name:
        t = threading.Thread(target=main, args=(name,))
        t.start()
        threads.append(t)
    for thread in threads:
        thread.join()

concurrent.futures 模塊

線程池:

import time
from concurrent.futures import ThreadPoolExecutor


def main(name):
    print('線程%s 開始' % name)
    time.sleep(5)
    print('線程%s 結束' % name)


if __name__ == '__main__':
    thread_name = ['1', '2', '3']
    with ThreadPoolExecutor(4) as executor:
        executor.map(main, thread_name)

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM