Python多线程

python 使用thread.Thread(target=fun_name)来添加线程,并使用new_Thread_name.start()函数来启动此线程

import time
import threading
def job():
    print("T1 start!\n")
    time.sleep(1)
    print("T1 stop!\n")


def main():
    added_thread = threading.Thread(target=job, name="T1")
    added_thread.start()
    print("All done!\n")


if __name__ == '__main__':
    main()
    #job()
T1 start!
All done!


T1 stop!

↑↑↑↑↑多线程不受主线程限制,主线程结束时多线程依然在运行

↓↓↓↓↓如果在将两个线程join在一起,那join下面的命令都会等到发出join命令的线程运行结束后再运行

def main():
    added_thread = threading.Thread(target=job, name="T1")
    added_thread.start()
    added_thread.join()
    print("All done!\n")


if __name__ == '__main__':
    main()
    #job()
T1 start!

T1 stop!

All done!

Python 多线程返回值的问题

线程是没有返回值的,所以得使用queue来存储多线程返回的数据

from queue import Queue
# 定义工作用的函数
def job(l, q):
    for i in range(len(l)):
        l[i] = l[i]**2
    # 把运算后的数据放入队列
    q.put(l)


# 定义多线程传参demo
def multithreading():
    # q是队列对象
    q = Queue()
    # 定义线程池
    threads = []
    # 设置待传入数据
    data = [[1, 2, 3], [4, 5, 6], [7, 7, 7], [8, 8, 8]]

    for i in range(4):
        # args是往线程调度的函数内传参
        # 新建了四个线程,并分别传进去参数
        t = threading.Thread(target=job, args=(data[i], q))
        t.start()
        # 将多个线程加入线程池
        threads.append(t)
    for thread in threads:
        # 将这几个线程与此函数join起来,其实无所谓
        #thread.join()
        pass
    # 定义输出结果的list
    results = []
    # 使用q.get()函数将队列中的数据取出并放入list
    for ii in range(4):
        results.append(q.get())
    print(results)


def main():
    multithreading()


if __name__ == '__main__':
    main()
    #job()
[[1, 4, 9], [16, 25, 36], [49, 49, 49], [64, 64, 64]]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值