python3-启动多个线程

在Python3中尝试使用for循环启动多个线程时,遇到线程串行执行的问题。原本的代码会导致线程逐一启动并等待前一个线程结束。通过修正参数传递方式,解决了线程阻塞问题,实现线程并行运行。修改后的代码成功并发执行了所有线程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题:在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()

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值