zoukankan      html  css  js  c++  java
  • PYthon-4.26作业

    首先,开启新的线程,是不会新开辟内存空间的,即,子线程和主线程 都在同一个进程里,也就是主进程里,用os.pid(),os.ppid()

    服务器:
    方式一:Thread实例化

    def task(conn, addr):
        while True:
            try:
                data = conn.recv(1024)
                if not data:
                    print('连接已断开')
                    break
                print('收到客户端%s第一条信息%s' % (conn, addr))
                print('信息为:%s' % data.decode('utf-8'))
                conn.send('good'.encode('utf-8'))
            except Exception:
                print('连接已断开')
                break
    

    if __name__ == '__main__': server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server.bind(('127.0.0.1', 6666)) server.listen(5) while True: conn, addr = server.accept() # print(os.getpid()) # print(os.getppid()) t1 = Thread(target=task, args=(conn, addr)) t2 = Thread(target=task, args=(conn, addr)) t1.start() t2.start()

    服务端:
    方式二:自定义子类,继承Thread,__init__可以添加新的属性,要在run里,实现你的一些函数,把参数传进去。更新,其实不写run也可以,子类中没有,弗雷中有,把run去掉后,发现运行正常。其实,__init__方法,没有添加,任何自定义属性,那就和父类Thread完全一样了,,,

    def task(conn, addr):
        # print(os.getpid())
        # print(os.getppid())
        # print(current_thread().name)
        # print(current_thread().is_alive())
        # print(active_count())
        while True:
            try:
                data = conn.recv(1024)
                if not data:
                    print('连接已断开')
                    break
                print('收到客户端%s第一条信息%s' % (conn, addr))
                print('信息为:%s' % data.decode('utf-8'))
                conn.send('good'.encode('utf-8'))
            except Exception:
                print('连接已断开')
                break
    
    class Mythread(Thread):
        def __init__(self, task, args):
            super().__init__(target=task, args=args)
    
        def run(self):
            task(conn, addr)
    
    
    if __name__ == '__main__':
        server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        server.bind(('127.0.0.1', 6666))
        server.listen(5)
        while True:
            conn, addr = server.accept()
            t1 = Mythread(task=task, args=(conn, addr))
            t1.start()
  • 相关阅读:
    android intent 传递list或者对象
    MyEclipse快捷键大全
    keystore 介绍
    oracle存储过程学习---包的概念
    判断变量类型
    Android自定义控件之TextView
    Myeclipse SVN 修改用户名和密码
    关于Inflater
    windowsxp系统下SVN添加新用户
    【原创】python:open函数的使用方法
  • 原文地址:https://www.cnblogs.com/lijunc/p/12782670.html
Copyright © 2011-2022 走看看