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'
阅读全文
0 0
- Python学习--threading应用和socket应用
- python--threading 多线程的简单应用
- Python中socket和多线程的应用
- Python Socket 简单应用
- System.Threading.Timer应用
- python中threading的高级函数应用解析
- python多线程中互斥锁Threading.Lock的简单应用
- PHP---socket应用学习
- python threading 学习笔记
- python threading 学习笔记
- python threading的学习
- python语言的socket应用
- python的threading模块中threading.RLock和threading.Lock
- Python模块学习 ---- threading 多线程控制和处理
- Python模块学习 ---- threading 多线程控制和处理
- Python模块学习 ---- threading 多线程控制和处理
- Python模块学习 ---- threading 多线程控制和处理
- Python模块学习 ---- threading 多线程控制和处理
- python在线编译器的简单原理与超简单实现
- android 软键盘
- SQLServer 查询最近一天,三天,一周,一月,一季度数据的方法
- webpack初体验
- 消息服务
- Python学习--threading应用和socket应用
- 浅入快出--递归之斐波那契数列(一)
- 重要通知|针对新一轮比特币勒索蠕虫病毒的安全建议
- 【原创整理】织梦dedecms仿站调用代码大全
- RabbitMQ之路由 direct方式
- solr 页面配置访问权限
- 友盟推送成功但是收不到
- hadoop框架学习
- h5+分享到微信、朋友圈代码示例