python实现多线程

threading.Thread 模块  

继承实现

函数实现

concurrent.futures 模块

threading.Thread 模块  

继承实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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()

  

函数实现: 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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 模块

线程池:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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)

  

posted @   liyaaa  阅读(204)  评论(1编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示