day 25

1.基于udp协议的套接字—支持开发

服务端

import socketserver

class MyRequestHanlder(socketserver.BaseRequestHandler):
    def handle(self):
        data,server = self.request
        server.sendto(data.upper(),self.client_address)


server = socketserver.ThreadingUDPServer(('127.0.0.1',9999),MyRequestHanlder)
server.serve_forever()
客户端
from socket import *

client = socket(AF_INET,SOCK_DGRAM)

while True:
    msg = input(">>>: ").strip()
    client.sendto(msg.encode('utf-8'),('127.0.0.1',9999))
    res,server_addr = client.recvfrom(1024)
    print(res.decode('utf-8'))

开放相关概念

进程:进程指的就是程序的运行过程,是一个动态的概念
程序:程序就是一系列的代码文件,是一个静态的概念

进程也可以说成是操作系统干活的过程,
一个进程说白了就是操作系统控制硬件来运行应用程序的过程

所以说进程是操作系统最核心的概念,没有之一,研究进程就是在研究操作系统


多道技术
    1、空间上的复用
    2、时间上的复用
        cpu在多个进程/任务之间快速切换
            1、遇到io切
            2、占用时间过长也切


批处理操作系统:一批程序是一个运行完毕,再运行下一个,即串行

分时操作操作系统

MULTICS

unix

minix

linux

开启进程的两种方式

 

from multiprocessing import Process
import os
import time

def task(n):
    print("父进程:%s 自己:%s 正在运行" %(os.getppid(),os.getpid()))
    time.sleep(n)
    print("父进程:%s 自己:%s 运行完毕" %(os.getppid(),os.getpid()))

if __name__ == '__main__':
    p = Process(target=task,args=(3,))
    p.start()  # 通知操作系统开启进程
    print("主",os.getpid())

 

from multiprocessing import Process
import os
import time

class Myprocess(Process):
    def __init__(self,n):
        super().__init__()
        self.n = n

    def run(self) -> None:
        print("父进程:%s 自己:%s 正在运行" % (os.getppid(), os.getpid()))
        time.sleep(self.n)
        print("父进程:%s 自己:%s 运行完毕" % (os.getppid(), os.getpid()))


if __name__ == '__main__':
    p = Myprocess(3)
    p.start()
    print('主',os.getpid())

进程间内存空间是隔离的

from multiprocessing import Process
import os
import time

count = 100

def task():
    global count
    count = 0

if __name__ == '__main__':
    p = Process(target=task)
    p.start()  # 通知操作系统开启进程
    time.sleep(5)
    print("主",count)
进程对此昂相关方法
#
# from multiprocessing import Process
# import os
# import time
#
# count = 100
#
# def task():
#     global count
#     count = 0
#
# if __name__ == '__main__':
#     p = Process(target=task)
#     p.start()  # 通知操作系统开启进程
#     p.join()
#     print("主",count)

# # 例2
#
# from multiprocessing import Process
# import os
# import time
#
# def task(n):
#     print(os.getpid())
#     time.sleep(n)
#
# if __name__ == '__main__':
#     p1 = Process(target=task,args=(3,))
#     p2 = Process(target=task,args=(2,))
#     p3 = Process(target=task,args=(1,))
#
#     start = time.time()
#     p1.start()  # 通知操作系统开启进程
#     p1.join()
#
#     p2.start()  # 通知操作系统开启进程
#     p2.join()
#
#     p3.start()  # 通知操作系统开启进程
#     p3.join()
#
#     stop = time.time()
#     print(stop - start)
#

# 例3

from multiprocessing import Process
import os
import time


def task(n):
    print(os.getpid())
    time.sleep(n)


if __name__ == '__main__':
    p1 = Process(target=task, args=(3,),name='进程1')
    p1.start()
    print(p1.name,p1.pid)
    # p1.join()
    p1.terminate()
    time.sleep(0.01)
    print(p1.is_alive())

j

j

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值