Python 3 之多线程研究
来源:互联网 发布:直通车怎么开淘宝 编辑:程序博客网 时间:2024/05/18 01:26
今天想写一个工具,通过多线程去一个队列中读取数据,要求如下:
1.多个线程同时读取队列,所以队列要做到线程安全:queue.Queue,这个本身就是线程安生的,所以没有问题
2.主线程要等到所有新开的子线程结束后才能结束,这个用到了Threading中的isAlive()方法,来判断线程是否还存活
3.不能出现开了多个子线程,却被一个抢着CPU执行时间,这个学过操作系统的都知道time.sleep(0.01),线程停止一下,让出CPU下面是代码了
我的博客:http://www.paulwangblog.com/
'''Created on 2011-11-10@author: PaulWangDescription:FileName:myThread.py'''import threadingimport timeclass MyThread(threading.Thread): def __init__(self, threadname,records): threading.Thread.__init__(self, name=threadname) self.records = records self.name = threadname def run(self):# time.sleep(0.01) print("downloadFromQueue start %d" % self.records.qsize()) while(self.records.qsize()): print( "id:%s get item is %s" % (self.name, self.records.get()) ) time.sleep(0.001)
'''Created on 2011-11-9@author: PaulWangDescription:FileName:test.py'''from queue import Queueimport myMySQLimport threadingimport timefrom myThread import MyThreadtry: def download(records,threadNum): tasks = [] for i in range(0,threadNum): Thread = MyThread(i,records) Thread.setDaemon( False )#主线程结束后子线程结束整个进程才结束 Thread.start() tasks.append(Thread) #如果有线程没有结束,那就不退出,确保主线程不退出 for task in tasks: if task.isAlive(): tasks.append(task) continue db = myMySQL.myMySQL(); db.connect( "localhost","root","","cdcol",True ) db.selectDB("drupal") rows = db.getrows("select * from test") print(rows) myQueue = Queue() for row in rows: myQueue.put(row) download(myQueue,4) if db.isConnected(): db.close() print('is over...')except: if db.isConnected(): db.close() print("error ")
- Python 3 之多线程研究
- java之多线程研究(一)
- python之多线程
- python之多线程2
- python之多线程
- Python之多线程学习
- python 之多线程编程
- Python并发之多线程
- Python之多线程
- Python学习笔记之多线程
- python学习笔记之多线程
- python学习系列之多线程
- Python学习之多线程编程
- python爬虫进阶之多线程
- Python之多线程,锁demo
- python之多线程简单实例
- Python实战之多线程编程threading.Thread
- Python实战之多线程编程thread模块
- 11.11.11
- linux c++ stack 栈 学习积累
- 封装良好的java mail工具,支持附件,群发,抄送,认证,无认证,ssl,html格式
- TI Davinci DM6446开发攻略——UBL移植
- Add-on Table ‘Enhancement category for table missing’ 警告解决
- Python 3 之多线程研究
- base64 浅谈以及自己的认识
- FastkeyEntity
- SendMessage and PostMessage的区别
- Sybase IQ数据库之导出、导入研究
- 如何带好软件测试新人&测试新人如何学习
- fastkey_tool_manage
- Python 3中的多线程文件下载类
- Python库之MySQLdb介绍