• 多线程实例


    1>>ping 一个网段的主机

     1 import subprocess
     2 import threading
     3 
     4 
     5 class Ping:
     6     def __init__(self, host):
     7         self.host = host
     8 
     9     def __call__(self):
    10 
    11         result = subprocess.run('ping -c2 %s &> /dev/null' % self.host, shell=True)
    12         if result.returncode == 0:
    13             print('%s:up' % self.host)
    14         else:
    15             print('%s:down' % self.host)
    16 
    17 
    18 
    19 if __name__ == "__main__":
    20     ips = ['176.130.1.%s' % i for i in range(1,255)]
    21     for ip in ips:
    22         t = threading.Thread(target=Ping(ip))
    23         t.start()

    2.多进程实现ping

     1 import os
     2 import subprocess
     3 
     4 def ping(host):
     5     result = subprocess.run('ping -c2 %s &> /dev/null' %host,shell=True)
     6     if result.returncode == 0:
     7         print('%s:up' % host)
     8     else:
     9         print('%s:down' % host)
    10 
    11 def main():
    12     ips = ['176.130.1.%s' % i for i in range(1,255)]
    13     for ip in ips:
    14         pid = os.fork()
    15         if not pid:
    16             ping(ip)
    17             exit()
    18 
    19 
    20 
    21 if __name__ == "__main__":
    22     main()


    3.多进程实现socket通信 

     1 import socket
     2 from time import strftime
     3 import os
     4 
     5 
     6 class TcpTimeServer(object):
     7     def __init__(self, host='', port=12345):
     8         self.addr = (host, port)
     9         self.serv = socket.socket()
    10 
    11     def chat(self,cli_sock):
    12         while True:
    13             data = cli_sock.recv(1024)
    14             if data.strip() == b'quit':
    15                 break
    16             data = data.decode()
    17             data = '[%s] %s' %(strftime('%H:%M:%S'),data)
    18             cli_sock.send(data.encode())
    19         cli_sock.close()
    20 
    21     def run(self):
    22         self.serv.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    23         self.serv.bind(self.addr)
    24         self.serv.listen(1)
    25 
    26         while True:
    27             try:
    28                 cli_sock , cli_addr = self.serv.accept()
    29             except KeyboardInterrupt:
    30                 break
    31             pid = os.fork()
    32             if not pid:
    33                 self.serv.close()   # 子进程不需要服务器套接字,关掉
    34                 self.chat(cli_sock)
    35                 exit()
    36             cli_sock.close()        # 父进程不与客户及通信,关闭客户机套接字
    37 
    38             while True:
    39                 result = os.waitpid(-1,1)[0]
    40                 if result == 0:     # 不是僵尸进程,则终端循环
    41                     break
    42 
    43         self.serv.close()
    44 
    45 
    46 if __name__ == "__main__":
    47     tcpserv = TcpTimeServer()
    48     tcpserv.run()

    4.多线程实现socket通讯

     1 import socket
     2 from time import strftime
     3 import threading
     4 
     5 class TcpTimeServer(object):
     6     def __init__(self, host='', port=12345):
     7         self.addr = (host, port)
     8         self.serv = socket.socket()
     9 
    10     def chat(self,cli_sock):
    11         while True:
    12             data = cli_sock.recv(1024)
    13             if data.strip() == b'quit':
    14                 break
    15             data = data.decode()
    16             data = '[%s] %s' %(strftime('%H:%M:%S'),data)
    17             cli_sock.send(data.encode())
    18         cli_sock.close()
    19 
    20     def run(self):
    21         self.serv.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    22         self.serv.bind(self.addr)
    23         self.serv.listen(1)
    24 
    25         while True:
    26             try:
    27                 cli_sock , cli_addr = self.serv.accept()
    28             except KeyboardInterrupt:
    29                 break
    30             t = threading.Thread(target=self.chat, args=(cli_sock,))
    31             t.start()
    32 
    33         self.serv.close()
    34 
    35 
    36 if __name__ == "__main__":
    37     tcpserv = TcpTimeServer()
    38     tcpserv.run()
  • 相关阅读:
    5月27日
    5月26日
    5月25日
    5月24日
    5月22日
    梦断代码(3)
    01团队冲刺
    07周总结
    06周总结
    构建之法阅读笔记
  • 原文地址:https://www.cnblogs.com/ray-mmss/p/10579303.html
Copyright © 2020-2023  润新知