这里不是写了释放吗 为什么还需要排队 然后造成冲突
#encoding=utf-8 #测试echo #这个文件就是echo服务器(收到数据原封发给对方) from socket import * from threading import Thread from queue import Queue udpSock=socket(AF_INET,SOCK_DGRAM) #绑定本地信息,不使用随机端口,IP和端口号,IP是本机IP udpSock.bind(("",8585)) def recvfrom(): while True: recvData=udpSock.recvfrom(1024) print(recvData[0].decode()) ma.put(recvData[1]) def sendto(): while True: data=input("请输入:") Address=ma.get() udpSock.sendto(data.encode(),Address) if __name__ == '__main__': ma = Queue() p1=Thread(target=recvfrom) p2=Thread(target=sendto) p1.start() p2.start() udpSock.close()
我写的全双工聊天,但运行不了,我是哪里没有注意到
time sleep multiprocessing Process os MyProcess(Process): (,name): Process.() .name=name (): (.name,os.getpid()) (.name,os.getcwd()) __name__ == : (,os.getpid()) p = MyProcess() p1 = MyProcess() p.start() p1.start()
我这个代码运行后只运行了
print(f"当前ID:",os.getpid())
其他的跟没有调用一样。是python或pychram版本的问题?
为什么这句话还没打完,就插进来了?
正常的是这种
import threading from threading import Thread from time import sleep class MyThread(Thread): def __init__(self, name): Thread.__init__(self) self.name = name def run(self): self.printf() def printf(self): print(f"线程{self.name}-start", threading.current_thread()) for i in range(0, 5): print(i) sleep(3) print(f'线程{self.name}-end') if __name__ == '__main__': print('主线程-start', threading.current_thread()) t1 = MyThread('t1') t2 = MyThread('t2') t1.daemon = True t2.daemon = True t1.start() t2.start() print('主线程-end')
t1 = Thread(target=func1,args=("t1",))
老师这个target和thread有什么关系,这个是哪里的
守护线程如果要设置的话,是不是所有的线程都要设置守护线程,我试了开启两个线程,只设置一个守护线程,结果好像两个在主线程结束后还都仍然运行
这个连接交换机的线怎么是橙色的?然后传输不了数据
from multiprocessing import Process,current_process import os from multiprocessing import Manager def func(name,m_dict,m_list): print("子进程{} 获取了数据{}".format(os.getpid(),m_list)) print("子进程{} 获取了数据{}".format(os.getpid(),m_dict)) m_list.append("你好") m_dict["name"]="尚学堂" if __name__=="__main__": print("主进程ID{}".format(current_process().pid)) with Manager() as mgr: m_list=mgr.list() m_dict=mgr.dict() m_list.append("Hello!!!") p1=Process(target=func,args=("p1",m_list,m_dict)) p1.start() p1.join() print(m_list) print(m_dict)
socket * threading Thread (): : recv_data = client_socket.recv() (recv_data.decode()) (): : msg = () client_socket.send(msg.encode()) msg == : __name__ == : client_socket=socket(AF_INETSOCK_STREAM) client_socket.connect(()) t1=Thread(=recv_data()) t2=Thread(=send_data()) t1.start() t2.start() t1.join() t2.join() client_socket.close()
t = Thread(target=home,args=(f"tom{i}",se))
args里要传哪些参数?
为什么没有打印p=MyRocess("p")
print(f"Threading:{name} start")
这个
"Threading:{name} start"前面的f是啥意思?我好像记得讲过,又好像记得没讲过,谢谢老师解答
f.write(recv_date[0][4:]) #将数据写入
这个地方如果客户端发送的ack服务器没有收到,服务器重新发送了一份数据,文件就出现问题了吧
为什么我的客户端运行不出来啊
#coding=utf-8 from socket import * from threading import Thread def recv_data(): while True: # 接收服务端数据 recv_data = client_socket.recv(1024) print(f"服务器端说:{recv_data.decode('gbk')}") def send_data(): while True: msg = input(">") client_socket.send(msg.encode("gbk")) if msg == "end": break if __name__ == '__main__': client_socket=socket(AF_INET,SOCK_STREAM) client_socket.connect(("127.0.0.1",8899)) t1=Thread(target=recv_data()) t2=Thread(target=send_data()) t1.start() t2.start() t1.join() t2.join() client_socket.close()
multiprocessing time sleep (conn1): sub_info = (multiprocessing.current_process().pidsub_info) sleep() conn1.send(sub_info) (conn1.recv()) sleep() (conn2): sub_info = (multiprocessing.current_process().pidsub_info) sleep() conn2.send(sub_info) (conn2.recv()) sleep() __name__ == : conn1,conn2 = multiprocessing.Pipe() process1 = multiprocessing.Process(=fun1,=(,)) process2 = multiprocessing.Process(=fun2,=(,)) process1.start() process2.start()
老师,我测试管道间通信的时候,有这个报错
非常抱歉给您带来不好的体验!为了更深入的了解您的学习情况以及遇到的问题,您可以直接拨打投诉热线:
我们将在第一时间处理好您的问题!
关于
课程分类
百战程序员微信公众号
百战程序员微信小程序
©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园网站维护:百战汇智(北京)科技有限公司 京公网安备 11011402011233号 京ICP备18060230号-3 营业执照 经营许可证:京B2-20212637