Python学习--threading应用和socket应用

来源:互联网 发布:怎么查域名的ip地址 编辑:程序博客网 时间:2024/06/05 11:32

Python学习–threading应用和socket应用
代码示例:

#!/usr/bin/pythonimport threadingimport randomfrom time import ctime, time, sleepfrom socket import *#TCP infoHOST = '10.1.252.95'PORT = 6688ADDR = (HOST, PORT)BUFFSIZE = 1024#thread numbersTHREAD_NUMS = 10#send frequencySEND_FREQ = 10000#send info send_info_list = ['CidUserQuery {1001} {ME60-X16-ZJZ01-63201001000000@iptv} {}',                   'CidUserQuery4NAT {1001} {} {60.11.69.53} {}  {} ',                   'CidUserQuery {1002} {} {10.1.224.3}',                  'CidUserQuery {1002} {} {10.1.224.4}',                  'CidUserQuery {1002}  {10.1.224.5}',                  'CidUserQuery {1002} {10.1.224.5}',                  'CiUserQuery {1002} {} {10.1.224.5}']#work thread classclass WorkThread(threading.Thread):    def __init__(self, func, args, name):        threading.Thread.__init__(self)        self.func = func        self.args = args        self.name = name        self.res = None    #get result    def get_result(self):        return self.res    #run thread    def run(self):        print 'run loop start at:\n', ctime()        self.res = apply(self.func, self.args)        print 'run loop end at:\n', ctime()#thread call-back functiondef thread_func(thread_name):    print '%s begin.\n' % thread_name    #sleep(random.random()*1000)    com_with_server(thread_name)    print '%s end.\n' % thread_name#init thread and run def run_thread():    start_time = time()    print __name__, ' Start at:\n', ctime()    #thread pool    threads = []    #create work thread    thread_nums = range(0, THREAD_NUMS)    for i in thread_nums:        thread_name = 'Thread[%d]' % i        t = WorkThread(thread_func, (thread_name,), thread_func.__name__)        threads.append(t)    #run threads    for i in thread_nums:        threads[i].start()    #wait thread end    for i in thread_nums:        threads[i].join()    print __name__, ' End at:\n', ctime()    end_time = time()    print 'cost time:\n', (end_time - start_time)#communicate with tcp serverdef com_with_server(thread_name):    for i in range(0, SEND_FREQ):        try:            #create client socket            cli_sock = socket(AF_INET, SOCK_STREAM)            #connect server            cli_sock.connect(ADDR)            #print '----2----\n'            #sleep(random.random()*10)            count = random.randint(0, len(send_info_list)-1)            data = send_info_list[count]            send_data = '%04d%s' % (len(data), data)            print '%s send:[%s]\n' % (thread_name, send_data)            #send info             cli_sock.send(send_data)            #receive info            recv_data = cli_sock.recv(BUFFSIZE)            print '%s recv:[%s]\n' % (thread_name, recv_data)            cli_sock.close()        except Exception, e:            print 'Error:%s\n' % e            cli_sock.close()#main if  __name__ == '__main__':    print 'main begin\n'    run_thread()    print 'main end\n'
原创粉丝点击