python3-启动多个线程

问题:在for循环里面想同时启动多个线程,但是程序运行过程中产生的是线程一个一个启动,即:启动第一个线程之后主线程等待子线程运行完成之后才启动第二个,代码如下:

import threading
import time
def thread(num):
    print("这是线程", num)
    for i in range(3):
        print('线程:', num, ':', i)
        time.sleep(1)
def thread1(num):
    print("这是线程", num)
    for i in range(3):
        print('线程:', num, ':', i)
        time.sleep(1)
def thread3(num):
    print("这是线程", num)
    for i in range(3):
        print('线程:', num, ':', i)
        time.sleep(1)      
if __name__ == '__main__':
    tq = threading.Thread(target=thread(1), args=())
    tq.start()
    tw = threading.Thread(target=thread1(2), args=())
    tw.start()
    te = threading.Thread(target=thread3(3), args=())
    te.start()
    for i in range(10):            
        t = "th" + str(i)
        print(t)
        t = threading.Thread(target=thread(i), args=())    

运行结果:
在这里插入图片描述

解决:
好吧,对python多线程编程语法理解甚少,参数传递问题。

tq = threading.Thread(***target=thread(1), args=()***)
tw = threading.Thread(***target=thread1(2), args=()***)
te = threading.Thread(***target=thread3(3), args=()***)

改为:

import threading
import time
def thread(num):
    print("这是线程", num)
    for i in range(3):
        print('线程:', num, ':', i)
        time.sleep(1)
def thread1(num):
    print("这是线程", num)
    for i in range(3):
        print('线程:', num, ':', i)
        time.sleep(1)
def thread3(num):
    print("这是线程", num)
    for i in range(3):
        print('线程:', num, ':', i)
        time.sleep(1)    
if __name__ == '__main__':
    tq = threading.Thread(target=thread, args=(1,))
    tq.start()
    tw = threading.Thread(target=thread1, args=(2,))
    tw.start()
    te = threading.Thread(target=thread3, args=(3,))
    te.start()
    T_POOL = []
    for i in range(10):        
        t = "th" + str(i)
        print(t)
        t = threading.Thread(target=thread, args=(i,))  
        t.start()
        T_POOL.append(t)      
    
    tq.join()
    tw.join()
    te.join()
    for t in T_POOL:
        t.join()

运行结果:
在这里插入图片描述


版权声明:本文为Root__Yang原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。