会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132358个问题
Python 全系列/第三阶段:Python 网络与并发编程/并发编程 241楼
Python 全系列/第三阶段:Python 网络与并发编程/并发编程 242楼
Python 全系列/第三阶段:Python 网络与并发编程/网络通信 246楼

# 单线程(s)         多线程(s)
# 5.16              3.04
# 5.08              3.20
# 5.01              3.06
# 4.92              3.10
# 4.99              3.26

# 4.91              3.11
# 5.05              3.13
# 5.21              3.08
# 4.91              3.19
# 4.94              3.08


from threading import Thread
from threading import Lock
from time import time


def getNumber1(name, num):
    for number in num[::]:
        print(f'{name}-{number}')
        num.remove(number)


def getNumber2(name, num):
    lock1.acquire()
    for number in num[::]:
        print(f'{name}-{number}')
        num.remove(number)
    lock1.release()


if __name__ == '__main__':
    start_time1 = time()
    num_list = [x for x in range(1, 100001)]

    lock1 = Lock()

    t1 = Thread(target=getNumber2, args=('t1', num_list))
    t2 = Thread(target=getNumber2, args=('t2', num_list))
    t3 = Thread(target=getNumber2, args=('t3', num_list))

    t1.start()
    t2.start()
    t3.start()

    t1.join()
    t2.join()
    t3.join()

    end_time1 = time()

    print(end_time1 - start_time1)


    # start_time2 = time()
    #
    # getNumber1('邓明宝', num_list)
    #
    # end_time2 = time()
    #
    # print(end_time2 - start_time2)

    # print(end_time1 - start_time1 - (end_time2 - start_time2))

    print("主线程-end")

这个多线程我加锁了,理论上已经相当于单线程了,为什么执行时间还会比单线程快很多

Python 全系列/第三阶段:Python 网络与并发编程/并发编程 254楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637