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()
  • 相关阅读:
    C语言之setjmp
    指针和数组的千丝万缕(二)
    函数和指针的运用
    程序员的几个好的博客地址
    C语言之setjmp
    指针和数组的千丝万缕(二)
    指针和数组的千丝万缕(一)
    函数和指针的运用
    指针和数组的千丝万缕(一)
    poj3300
  • 原文地址:https://www.cnblogs.com/lijunc/p/12782670.html
Copyright © 2011-2022 走看看