2024年10月python笔记总结(phython笔记)

 更新时间:2024-10-12

  ⑴python笔记总结(phython笔记)

  ⑵本文主要介绍pythonNot:打印(%s正在运行%nam:p=proc:的不同操作系统对创建流程有不同的要求在windows中进程是通过导入模块来创建的所以创建进程的代码必须写在__main__subcode中否则会直接报错因为在linux和mac中无限制的创建一个进程就是直接复制一个源代码然后执行而且不需要用__main编写__子码""#第二个方法(由类创建)来自多处理导入进程类Test(Proc:d:sup:print(s:p=t:打印(f{nam:P=进程(target=taskargs=(;杰森))p=进程(target=任务args=(;托尼))p=进程(target=任务args=(;凯文))start_time=time时间P开始P开始P开始P加入P加入PJoinEnd_time=timetime-start_timeprint(;主要工艺流程及流程;F总耗时:{:.由于上述进程相继启动所以进程相互重叠#如果交替执行一个start和一个join总耗时就是每个任务的耗时之和因为join方让子进程在执行主进程之前完成执行并将与客户端通信的代码封装成一个函数然后每个客户端会创建一个进程具体交互多处理导入进程#的服务器端导入套接字封装了一个g:服务器=socket.socketserver.bind(;...;))服务器listen()returnserver#将服务客户端的代码封装成一个函数(通信代码)deftalk(sock):而Tru:data=sockrecv()打印(数据解码(utf))袜子发送(数据upp:s:sockaddr=server.aeptp=Process(target=talkargs=(sock))p.startclientimportsocketclient=socket.socketclient.connect((;...;))而Tru:client.send(b;你好大宝贝~)data=client.recv()print(data.decod:tasklist结果集PID#mac系统ps-ef#python代码视图.来自多处理导入进程的current_process函数Current_processcurrent_processPID#获取进程号的用途之一是可以通过代码管理进程windowstaskkill关键字mac/linuxkill关键字.os模块os.getpid#获取当前进程的进程号os.getppid#获取当前进程的父进程号#Kill子进程terminate#判断子进程是否存活is_alive僵尸进程和孤儿进程#僵尸进程僵尸进程:一个进程使用fork创建一个子进程如果子进程退出而父进程没有调用wait或waitpid来获取子进程的状态信息那么子进程的进程描述符仍然保存在系统中这个过程叫做僵尸过程死进程:子进程退出后进程的重资源(cpu、内存、打开的文件)会被释放子进程的进程描述符仍然保存在系统中比如pid所有子进程运行后都会变成僵尸进程(死而不亡)僵尸进程只会在程序正常结束时出现如果父进程被强制关闭操作系统会删除父进程已经运行完的所有子进程不会出现僵尸进程僵尸进程的危害:系统的pid数是有限的如果僵尸进程保存的信息没有一直被释放它会一直累积直到没有可用的pid号导致系统无法生成新的进程#孤立进程孤立进程(无害):当一个父进程退出时它的一个或多个子进程仍在运行那么这些子进程将成为孤立进程孤立进程将被初始化进程(进程号)采用初始化进程将收集它们的状态子进程还活着而父进程意外死亡子进程将作系统自动接管(Children美国福利协会);;互斥#介绍(抢票问题):为什么手机明明显示还有余票但是你点击购买时却提示没有余票然后你回到查询页面发现真的没有余票?#为什么:因为你在某个时间点打开购票软件查看票数此时你正在看数据只要你不t刷新并单击下一步将始终显示此时的数据那么这是如何实现的呢?你需要使用互斥锁#代码模拟:从多处理导入进程导入JSON导入时间导入随机#ticket_data.json文件内容:{";tick:}#检票d:与开放(r票证_数据.JSON;r编码=utf)作为f:数据=JSON.load(f)print(f;{name}查询当前余票:%s;%data.g:第一点击购买门票你需要再次检查门票因为其他人可能已经购买了开放(r票证_数据.JSON;r编码=utf)asf:data=JSON.load(f)tim:数据[;票号]-=开(r票证_数据.JSON;w编码=utf)作为f:JSON.dump(数据F)打印(f{nam:印刷(f{nam:search(nam:forIinrang:p=process(target=runargs=(;用户:%s;%i))p.start#问题:以上模拟了买票的基本逻辑但是有一个问题如果同时抢票多个子流程得到的数据是一样的会显示抢票成功造成数据混乱我该怎么办?答:并发-串行(牺牲效率保证数据安全)-互斥锁#注:互斥锁可以不容易使用这很容易导致死锁.互斥锁只锁定在处理数据的部分并且可以不能到处添加严重影响程序的效率lockmutex=lock#Definemutex.acquir:搜索(name)#只是把买票环节变成串行mutex.acquire#抢锁买(name)互斥Release#Unlock注意:锁定购买后一定要解锁否则会一直卡在这个用户的手标签:过程码,下面一起看看pythonNot:打印(%s正在运行%nam:p=proc:的不同操作系统对创建流程有不同的要求在windows中进程是通过导入模块来创建的所以创建进程的代码必须写在__main__subcode中否则会直接报错因为在linux和mac中无限制的创建一个进程就是直接复制一个源代码然后执行而且不需要用__main编写__子码""#第二个方法(由类创建)来自多处理导入进程类Test(Proc:d:sup:print(s:p=t:打印(f{nam:P=进程(target=taskargs=(;杰森))p=进程(target=任务args=(;托尼))p=进程(target=任务args=(;凯文))start_time=time时间P开始P开始P开始P加入P加入PJoinEnd_time=timetime-start_timeprint(;主要工艺流程及流程;F总耗时:{:.由于上述进程相继启动所以进程相互重叠#如果交替执行一个start和一个join总耗时就是每个任务的耗时之和因为join方让子进程在执行主进程之前完成执行并将与客户端通信的代码封装成一个函数然后每个客户端会创建一个进程具体交互多处理导入进程#的服务器端导入套接字封装了一个g:服务器=socket.socketserver.bind(;...;))服务器listen()returnserver#将服务客户端的代码封装成一个函数(通信代码)deftalk(sock):而Tru:data=sockrecv()打印(数据解码(utf))袜子发送(数据upp:s:sockaddr=server.aeptp=Process(target=talkargs=(sock))p.startclientimportsocketclient=socket.socketclient.connect((;...;))而Tru:client.send(b;你好大宝贝~)data=client.recv()print(data.decod:tasklist结果集PID#mac系统ps-ef#python代码视图.来自多处理导入进程的current_process函数Current_processcurrent_processPID#获取进程号的用途之一是可以通过代码管理进程windowstaskkill关键字mac/linuxkill关键字.os模块os.getpid#获取当前进程的进程号os.getppid#获取当前进程的父进程号#Kill子进程terminate#判断子进程是否存活is_alive僵尸进程和孤儿进程#僵尸进程僵尸进程:一个进程使用fork创建一个子进程如果子进程退出而父进程没有调用wait或waitpid来获取子进程的状态信息那么子进程的进程描述符仍然保存在系统中这个过程叫做僵尸过程死进程:子进程退出后进程的重资源(cpu、内存、打开的文件)会被释放子进程的进程描述符仍然保存在系统中比如pid所有子进程运行后都会变成僵尸进程(死而不亡)僵尸进程只会在程序正常结束时出现如果父进程被强制关闭操作系统会删除父进程已经运行完的所有子进程不会出现僵尸进程僵尸进程的危害:系统的pid数是有限的如果僵尸进程保存的信息没有一直被释放它会一直累积直到没有可用的pid号导致系统无法生成新的进程#孤立进程孤立进程(无害):当一个父进程退出时它的一个或多个子进程仍在运行那么这些子进程将成为孤立进程孤立进程将被初始化进程(进程号)采用初始化进程将收集它们的状态子进程还活着而父进程意外死亡子进程将作系统自动接管(Children美国福利协会);;互斥#介绍(抢票问题):为什么手机明明显示还有余票但是你点击购买时却提示没有余票然后你回到查询页面发现真的没有余票?#为什么:因为你在某个时间点打开购票软件查看票数此时你正在看数据只要你不t刷新并单击下一步将始终显示此时的数据那么这是如何实现的呢?你需要使用互斥锁#代码模拟:从多处理导入进程导入JSON导入时间导入随机#ticket_data.json文件内容:{";tick:}#检票d:与开放(r票证_数据.JSON;r编码=utf)作为f:数据=JSON.load(f)print(f;{name}查询当前余票:%s;%data.g:第一点击购买门票你需要再次检查门票因为其他人可能已经购买了开放(r票证_数据.JSON;r编码=utf)asf:data=JSON.load(f)tim:数据[;票号]-=开(r票证_数据.JSON;w编码=utf)作为f:JSON.dump(数据F)打印(f{nam:印刷(f{nam:search(nam:forIinrang:p=process(target=runargs=(;用户:%s;%i))p.start#问题:以上模拟了买票的基本逻辑但是有一个问题如果同时抢票多个子流程得到的数据是一样的会显示抢票成功造成数据混乱我该怎么办?答:并发-串行(牺牲效率保证数据安全)-互斥锁#注:互斥锁可以不容易使用这很容易导致死锁.互斥锁只锁定在处理数据的部分并且可以不能到处添加严重影响程序的效率lockmutex=lock#Definemutex.acquir:搜索(name)#只是把买票环节变成串行mutex.acquire#抢锁买(name)互斥Release#Unlock注意:锁定购买后一定要解锁否则会一直卡在这个用户的手标签:过程码相关资讯。

您可能感兴趣的文章:

相关文章