请问老师:
线程锁应该就是 threading.Lock() 吧?那互斥锁是否就是线程锁呢?还是互斥锁是递归锁呢?
这里为什么会出错
client_socket,client_info = server_socket.accept()
老师,服务端持续接收信息中这句程序为什么不是写在循环中的呢
1、这里睡着了是什么意思,线程2为什么还会判断依然是100,可以继续取钱。
2、这里初始化些什么,不使用这段代码为什么不可以
描述:
在视频的11分45秒时提到服务器返回的数据包中“块编号”为两个字节,
我的理解是“块编号”最大为99,也就是只能传输512×99个字节数据,感觉太小了,后来在33节 编写下载器一节中,我下载的文件的“块编号”却是可以到703,
后来我传输一个较大文件后,“块编号”到65535后又会重新从0开始,但是65535是2的16次方。
疑问:
(1) 针对上面的描述以及tftp开篇讲的tftp是针对小文件的传输协议,那tftp最大能传输多大的文件?
(2)“块编号”的2个字节怎样理解?
(3)“块编号”最大可以是多少,是65535吗?
(4)当文件超出“块编号”的容纳范围是否不能下载而处于死循环中?
老师,请问,我在百度搜索中查询到的本机IP地址,与飞秋的IP不是同一串数字,是为什么呢,
但是飞秋和网络助手是同一个IP
if even.is_set():
if
even.is_set():
这行代码怎么理解
老师:
IO操作是什么 能不能详细解释一下?
不是讲的是导入模块的时候不要用*么,那是在那种情况下用*呢
#encoding=utf-8 from threading import Thread from time import sleep class Account: def __init__(self,money,name): self.money=money self.name=name #模拟提款操作 class Drawing(Thread): def __init__(self,drawingNum,account): Thread.__init__(self) self.drawingNum=drawingNum self.account=account self.expenseTotal=0 def run(self): lock.acquire() if self.account.money-self.drawingNum<0: return sleep(1) sleep.account.money-=self.drawingNum self.expenseTotal+=self.drawingNum lock.release() print(f"账户:{self.account.name},余额是:{self.account.money}") print(f"账户:{self.account.name},余额是:{self.expenseTotal}") if __name__=="__main__": a1=Account("小高",100) lock=Lock() draw1=Drawing(80,a1) #定义取钱线程对象 draw2=Drawing(80,a1) draw1.start() #你取钱 draw2.start() #另一个人取钱#
老师,我这个没有Lock()报错是怎么回事呀,好多次都是太远了
老师我的是mac电脑,程序运行是这样的,?要怎么设置?
关于下图我有两个问题:
在我标出来的地方有时显示“p1开始”有时显示“p2开始”,我先调用的P1.start()为什么p2还是会先开始?
为什么上来直接3个“当前进程号:。。。”第一个我理解是第21行的内容,第二个是进程p1的内容但随后不应该紧跟着执行“print("父进程号:{}".format(os.getppid()))”这条命吗,为什么又执行一次“print("当前进程号:{}".format(os.getpid()))”我知道这条命令的执行跟p2有关,但是为什么不是执行完p1后再开始p2,是因为并行的原因吗?
# coding=utf-8 from multiprocessing import Process from time import sleep import os class MyProcess(Process): def __init__(self, name): super().__init__() self.name = name def run(self): print("当前进程号:{0}".format(os.getpid())) print("父进程号:{0}".format(os.getppid())) print(f"{self.name}开始。。。") sleep(2) print(f"{self.name}结束。。。") if __name__ == '__main__': print("当前进程号:{0}".format(os.getpid())) p1 = MyProcess("p1") p2 = MyProcess("p2") p1.start() p2.start()
为什么在判断了是否为最后一个数据包,再发送确认请求?如:当最后一个数据包下载到客户端,此时跳出循环,客户端并没有发送确认请求,按照之前课程所讲,服务器会任务数据丢失,会不断的给客户端发送数据;而我们看到的数据是正确的传输过来,只是因为我们跳出循环,不在接收数据,但是服务器还是占用在不断的发送数据是吗?
可以将截图中的圈2放在圈1的上面吗?
这样就可以解决服务器一直发送最后一个数据包的问题,不知道我的理解是否正确?
老师那个聊天室那个开启两个线程去做不太明白??????????????????????
为什么这样
非常抱歉给您带来不好的体验!为了更深入的了解您的学习情况以及遇到的问题,您可以直接拨打投诉热线:
我们将在第一时间处理好您的问题!
关于
课程分类
百战程序员微信公众号
百战程序员微信小程序
©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园网站维护:百战汇智(北京)科技有限公司 京公网安备 11011402011233号 京ICP备18060230号-3 营业执照 经营许可证:京B2-20212637