from socket import * '''test文件''' # 创建对象 s = socket(AF_INET, SOCK_DGRAM) # ipv4 UDP 协议 s.bind(("", 8788)) s.sendto(b"data",("192.168.31.146",8585)) recvdata = s.recvfrom(1024) print(recvdata[0].decode()) from socket import * '''test1文件''' udpSocket = socket(AF_INET, SOCK_DGRAM) udpSocket.bind(("", 8585)) while True: recvdata = udpSocket.recvfrom(1024) print(recvdata[0].decode()) data = input("请输入:") udpSocket.sendto(data.encode(), recvdata[1]) udpSocket.close()
老师我想问为什么我的程序先运行test1然后再运行test,不会和视频里的一样直接在pycharm里面返回,而是再调试助手里面返回了data,程序就卡着不动了
from threading import Thread import time def user_input(): if thread2.is_alive() == False: enter = input("input something: ") print('alive') elif thread2.is_alive() == True : print("finish") def timer(): for i in range(30): time.sleep(1) if __name__ == '__main__': thread1 = Thread(target = user_input) thread2 = Thread(target = timer) thread1.start() thread2.start()
老师请问一下如果我想在用户输入的时候同时进行一个30s的倒计时,如果30s倒计时结束用户还没有输入东西,直接结束线程print(“finish”)。如果用户输入了东西并且按了回车我就结束所有线程应该怎么做。谢谢老师!
from threading import Thread from time import sleep, time import threading # 线程的实现 # 方法包装 # 创建普通方法 def func1(name): print(threading.currentThread()) print(f"Threading{name}start") sleep(3) print(f"Threading{name}end") if __name__ == "__main__": print(threading.currentThread()) # 开始时间 start = time() t1 = Thread(target=func1, args=('t1',)) t2 = Thread(target=func1, args=('t2',)) t1.start() t2.start() # func1('t1') # func1('t2') # 计算使用时间 end = time() - start print(end)
运行结果:
老师,怎么看代码中,哪一块是主线程,哪一块是子线程
老师 第15行和第17行存在的作用是什么
多进程是各个进程交替切换执行吗?主进程和子进程有执行的先后顺序吗?
子进程之间有执行的先后顺序吗?
多个不同线程在执行时是在一个CPU中不断进行切换不同的线程进行执行的,多进程是每个进程在不同的CPU中进行执行的,不存在不断切换的问题,是这样吗
老师下边这个UPD报错是什么原因呢?
from socket import * from threading import Thread def recv_data(): while True: recv_data = s.recvfrom(1024) # 1024表示本次接收的最大字节数 recv_content = recv_data[0].decode('gbk') print(f"收到远程信息:{recv_content},from{recv_data[1]}") if recv_content == "88": print("结束聊天!") break def send_data(): addr = ("127.0.0.1", 9999) while True: data = input("请输入: ") s.sendto(data.encode("gbk"), addr) if data == "88": print("聊天结束!") break if __name__ == '__main__': s = socket(AF_INET, SOCK_DGRAM) # 创建UDP类型的套接字 s.bind(("127.0.0.1", 8888)) # 绑定端口,ip可以不写 #创建两个线程 t1 = Thread(target=recv_data) t2 = Thread(target=recv_data) t1.start() t2.start() t1.join() t2.join()
老师,这节课里老师说的以及里面的注释一会儿进程,一会儿线程的,我看下面同学的您的回答也是,有些是线程,有些就变成了进程。请问这节课到底讲的是进程还是线程?
老师为什么图片名中有中文后,会显示图片不存在?
程序是按照视频里面老师的步骤写的,但是老师报错
from multiprocessing import Process, current_process,Pipe import os def func1(name, con): print(f"进程ID{os.getpid()}获取了数据:{con.recv()}") con.send("你好!") if __name__ == "__main__": print(f"进程ID:{current_process().pid}") con1, con2 = Pipe() p1 = Process(target=func1, args=("p1", con1)) p1.start() con2.send("hello!") print(con2.recv())
con是个 啥,从哪冒出来的
老师,请问,子进程和主进程之间,或者 两个进程之间这样传对象,有并发的问题吗?比如子进程放数据进去了,主进程同时在做对象的移除操作呢?
老师,接收信息这个画圈部分不懂,接收的内容是给了recv_data还是decode。如果是recv_data那中间应该是逗号才对,代表识别格式,用句号不就代表打印的是decode的内容了吗
多线程的顺序不确定是在没有sleep()等滞留的情况下,如果有sleep,则代码顺序优先的线程则会优先执行完毕,可以这样理解吗?
from multiprocessing import Queue,Pool,Process import random,time def write(q): for i in ['a','b','c'] : print('写入{0}'.format(i)) q.put(i) time.sleep(2) print(q.qsize()) def read(q): while True : if not q.empty() : print('获得消息{0}'.format(q.get())) else: break for i in ['a', 'b', 'c']: print('写入{0}'.format(i)) q.put(i) time.sleep(2) def get(q): while True : if not q.empty() : print('获得消息{0}'.format(q.get())) else: break if __name__ == "__main__" : q = Queue() qw = Process(target=write,args=(q,)) qr = Process(target=read,args=(q,)) qg = Process(target=get, args=(q,)) qw.start() qw.join() qr.start() qr.join() qg.start() qg.join() 老师如果用进程池生成进程的话,进程间通信可否操作?进程间通信指的是子进程之间的通信,如果父进程与子进程通信?
非常抱歉给您带来不好的体验!为了更深入的了解您的学习情况以及遇到的问题,您可以直接拨打投诉热线:
我们将在第一时间处理好您的问题!
关于
课程分类
百战程序员微信公众号
百战程序员微信小程序
©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园网站维护:百战汇智(北京)科技有限公司 京公网安备 11011402011233号 京ICP备18060230号-3 营业执照 经营许可证:京B2-20212637