t1=Thread()
老师你是怎么导入模块的
老师,
1、if已设置队列小于10,为什么一直生产,不停止
2、当最大容量设置10时,为什么生产到13,前2个为什么已存储在容器中
from socket import* from threading import Thread s = socket(AF_INET, SOCK_DGRAM) s.bind(("127.0.0.1", 8979)) def recv_data(): while True: data = s.recvfrom(1024) print(f"收到远程信息:{data[0].decode('gbk')},来自:{data[1]}") if data[0].decode('gbk') == "88": print("聊天结束") break def send_data(): while True: data = input("请输入:") add = (("127.0.0.1", 8081)) s.sendto(data.encode("gbk"), add) if data == "88": print("聊天结束") break if __name__ == '__main__': t1=Thread(target=send_data()) t2=Thread(target=recv_data()) t1.start() t2.start() t1.join() t2.join()
为什么输入“88”,才接收到信息,如果输入其他的,则是一直显示请输入
#encoding=utf-8 from socket import * from threading import Thread s=socket(AF_INET,SOCK_DGRAM) s.bind(("127.0.0.1",8080)) def recv_data(): while True: recv_data=s.recvfrom(1024) print("等待接收数据!") udp_data=recv_data[0].decode("gbk") print(f"接收的数据:{udp_data},from{recv_data[1]}") if udp_data=="88": print("结束聊天!") break def send_data(): while True: addr = ("127.0.0.1",8989) data=input("请输入数据:") s.sendto(data.encode("gbk"),addr) if __name__=="__main__": t1=Thread(target=recv_data) t2=Thread(target=send_data) t1.start() t2.start() t1.join() t2.join()
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吗
老师您受累看一下,我把顺序写在图片中了 不知道是不是这样的一个意思
from multiprocessing import Process, current_process, Pipe import os def func(name, con): print('进程ID {} 获取了数据:\n{}'.format(os.getpid(), con.recv())) con.send("朝如青丝暮成雪。") if __name__ == '__main__': print('进程ID:{}'.format(current_process().pid)) con1 = Pipe() con2 = Pipe() p1 = Process(target=func, args=('p1', con1)) p1.start() con2.send("高堂明镜悲白发,") p1.join() print(con2.recv())
老师为什么这样,会报错?这种和视频的,应该道理一样的吧!
老师可以讲解一下这个 self.account.money吗
老师,下载greenlet的时候,出现这个,之前下载pygame也还没下载到
老师你好,为什么要调用Thread的初始化方法啊?作用是什么?
它和super()的作用有什么区别吗?
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方法也能共用?
threading Thread time sleep (name): (name) i (): (namei) sleep() (name) __name__ == : () t1 = Thread(=func1,=(,)) t2 = Thread(=func1, =(,)) t1.start() t2.start() ()
线程t2,1为什么在线程t1,1前面
一、代码
from threading import Thread from time import sleep # 线程的实现 #方法包装 # coding=gbk #创建普通方法 def func1(name): print(f"Threading:{name} start") #创建线程 t1=Thread(target=func1,args=('t1',)) #args传入的必须为元组 t2=Thread(target=func1,args=('t2',)) #开始线程 t1.start() t2.start()
二、结果
三、问题
老师,百度以后添加了#coding=gbk 发现还是没用,请问怎么解决这个问题
老师,什么原因
聊天室1
#tcp服务器 from threading import Thread from socket import* # 创建sock对象 udpSock = socket(AF_INET, SOCK_DGRAM) #绑定ip地址端口 addr = (("",8080)) #发送数据 def fasong(): while True: date = input("输入:") udpSock.sendto(date.encode('gb2312'),fasong[1]) #接收数据 def jieshou(): while True: jieshus = udpSock.recvfrom(1024) print(jieshus[0].decode()) #创建线程 t1 = Thread(target = fasong()) t2 = Thread(target = jieshou()) #启动线程 t1.start() t2.start() udpSock.close()
聊天室2
from threading import Thread from socket import* #创建sock对象 udpSock = socket(AF_INET,SOCK_DGRAM) #绑定ip 地址端口 udpSock.bind(("",8080)) #接收数据 def jieshou(): while True: jieshou = udpSock.recvfrom(1024) print(jieshou[0].decode('gb2312')) #发送数据 def fasong(): while True: date = input("输入:") udpSock.sendto(date.encode('gb2312'),fasong[1]) #创建线程 t1 = Thread(target= fasong()) t2 = Thread(target= jieshou()) #启动线程 t1.start() t2.start()
threading Thread time sleep MyThread(Thread): (name): Thread.() .name = name (): i (): (.namei) sleep() __name__ == : () t1 = MyThread() t2 = MyThread() t1.start() t2.start()
t1 = MyThread() t2 = MyThread()
这块不用传递参数吗,给参数t1就报错
非常抱歉给您带来不好的体验!为了更深入的了解您的学习情况以及遇到的问题,您可以直接拨打投诉热线:
我们将在第一时间处理好您的问题!
关于
课程分类
百战程序员微信公众号
百战程序员微信小程序
©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园网站维护:百战汇智(北京)科技有限公司 京公网安备 11011402011233号 京ICP备18060230号-3 营业执照 经营许可证:京B2-20212637