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

from threading import Thread
from time import sleep,time
import threading
# Thread:线  
# 线程的实现
# 方法包装

# 创建普通方法
def func1(name):
    print(threading.currentThread())
    print(f"Threading:{name} start")  # f:输出一下哪个线程启动了,print语句一般都是提示信息,
    sleep(3)                           #不加也可以只是不会输出在控制台上(这里指的是name)
    print(f"Threading:{name} end")

if __name__ == "__main__":

    print(threading.currentThread())   # 打印默认的主线程 <_MainThread(MainThread, started 1068)>
    # 开始时间
    start = time()   # 时间测试
    '''
    # 创建线程
    t1 = Thread(target=func1,args=('t1',))  # t1后面加, 必须是元组     # 创建的是子线程
    t2 = Thread(target=func1,args=("t2",))
    # 开始时间
    start = time()
    # 开始线程
    t1.start()
    t2.start()
    # 等待t1线程执行完再往下执行
    t1.join()
    # 等待t2线程执行完再往下执行
    t2.join()
    #func1("t1")
    #func1("t2")
    '''
    thread_list = []
    for i in range(10):
        t = Thread(target=func1,args=(f"t{i+1}",))
        t.start()
        thread_list.append(t)
    for t in thread_list:
        t.join()    # join的使用 不要启动线程后立即join(),容易造成串行运行,导致并发失效
    # 结束时间
    end = time()-start
    print(end)

老师 这里多任务的实现是用了多线程模式方法吗 这里循环10个进程是子线程 主线程只有一个 就是MainThread吗

Python 全系列/第三阶段:Python 网络与并发编程/并发编程 905楼
Python 全系列/第三阶段:Python 网络与并发编程/并发编程 906楼
Python 全系列/第三阶段:Python 网络与并发编程/并发编程 908楼
Python 全系列/第三阶段:Python 网络与并发编程/并发编程 909楼
Python 全系列/第三阶段:Python 网络与并发编程/并发编程 910楼

from threading import Thread,Event
from time import sleep
'''
几分钟一辆车
人上车和车辆可以上人是要同时进行的,车辆不在站内和人等待车也是同时进行的
'''

def car():
    num=0
    #global count,有event就不用count了
    while True:
        if event.is_set():      #count%5!=0:
            print('车已到站,可以上车')
            sleep(1)
            #count+=1   #就是上了四个人后开走了
            num+=1
            if num%5==0:
                event.clear()       #上了五个人开走了
        else:
            print("车开走了....")
            sleep(6)
            #count=1        
            #过了六秒后又开来了
            event.set()     #重新变成真的
def person():
    while True:
        #if count%5!=0:
        if event.is_set():
            print('上车!!')
            sleep(1)
        else:
            print('等待车!!!') #用count的时候,等待一直在刷,程序没有停下来
            event.wait()        #阻塞线程
            #sleep(1)
if __name__=="__main__":
    event=Event()
    count=1
    t1=Thread(target=car)
    t2=Thread(target=person)
    t1.start()
    t2.start()

老师,这个event是在车方法里面变成True的,怎么在人方法里面也是True了,两个方法不是一个栈帧里面的,他们的调用event方法也能共用?

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

课程分类

百战程序员微信公众号

百战程序员微信小程序

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