5.1.6 练习题

1.  进程之间内存空间是隔离还是共享的?

请看代码的输出结果:

from multiprocessing import Process

n=100 #在windows系统中应该把全局变量定义在if __name__ == '__main__'之上就可以了

def work():
    global n
    n=0
    print('子进程内: ',n)


if __name__ == '__main__':
    p=Process(target=work)
    p.start()
    p.join()
    print('主进程内: ',n)
View Code

输出结果:

子进程内:  0
主进程内:  100
View Code

结论:进程之间的内存空间是隔离的。子进程创建时,拷贝走了主进程的内存数据,存放在自己独立的内存空间上,不会影响主进程的内存数据。

 

2. 基于多进程实现并发的套接字通信

服务器端:

import socket

from multiprocessing import Process


def community(conn):
    while True:
        try:
            data = conn.recv(1024)
            if not data:
                continue
            conn.send(data.upper())
        except ConnectionResetError:
            break

    conn.close()


def fun_server(IP, PORT):
    server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    server.bind((IP, PORT))
    server.listen(5)

    while True:
        conn, client_addr = server.accept()
        p = Process(target=community, args=(conn,))   # 为每一个连接都开一个子进程,然后继续监听新连接。弊端:并发多的程序,连接数据限制。
        p.start()

    server.close()


if __name__ == '__main__':
    fun_server('127.0.0.1', 8080)
View Code

客户端:

import socket

client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print(client)
client.connect(('127.0.0.1', 8080))
print(client)
while True:
    data = input('>>').strip()
    if not data:
        continue

    client.send(data.encode('utf8'))

    data = client.recv(1024).decode('utf8')
    print(data)


conn.close()
View Code

 

3. join的应用

有以下代码,分别控制输出:

from multiprocessing import Process
import time
import random

def task(n):
    time.sleep(random.randint(1,3))
    print('-------->%s' %n)

if __name__ == '__main__':
    p1=Process(target=task,args=(1,))
    p2=Process(target=task,args=(2,))
    p3=Process(target=task,args=(3,))

    p1.start()
    p2.start()
    p3.start()
    
    print('-------->4')

3.1  最先输出-------->4

     原代码就好,无需改动。子进程有睡,不管怎么样都会先输出4.

3.2. 最后输出-------->4

     修改:

     p1.start()

     p2.start()

   p3.start()

   p1.join()

  p2.join()

  p3.join()

3.3 按顺序输出 

   -------->1

   -------->2

   -------->3

   -------->4

修改:

     p1.start()

      p1.join()

     p2.start()

    p2.join()

     p3.start()

    p3.join()

 

 

转载于:https://www.cnblogs.com/beallaliu/p/9190372.html

基于SSM框架的网红酒店预定系统,是一个集前台用户操作和后台管理员管理于一体的综合性平台。该系统旨在通过信息化手段,提高酒店预订的效率和用户体验。 系统的主要功能模块包括: 1. **用户管理**:允许用户注册、登录,查看个人信息,以及修改个人资料和密码。 2. **客房管理**:管理员可以添加、删除或修改客房信息,包括房型、价格、设施等。 3. **预订管理**:用户可以浏览可用房型,进行预订操作,管理员则可以管理预订订单,包括确认预订、办理入住和退房等。 4. **退订管理**:用户和管理员都可以处理预订的取消,管理员可以审核退订请求。 5. **系统管理**:管理员可以进行系统设置,包括权限管理、日志查看等。 系统的设计考虑了用户体验和管理员的便捷性,通过SSM框架的灵活性和MySQL数据库的稳定性,实现了数据的高效管理和处理。系统的前端界面友好,操作流程简洁,能够满足用户快速预订和查询的需求。同时,系统的后台管理功能强大,能够为管理员提供全面的数据分析和决策支持。 此外,系统还具有高度的安全性和稳定性,通过角色权限控制,确保了数据的安全性和系统的稳定运行。系统的开发和设计,不仅提升了网红酒店的品牌形象,也为用户带来了便捷的预订体验,进一步推动了酒店行业的信息化发展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值