python 多线程
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 多线程相关的知识,希望对你有一定的参考价值。
前断学习python的时候学到了python 多线程这个知识,但是感觉python 多线程很难理解,更不用说写代码了,希望大家能告诉我一些相关的python 多线程的知识,让我能更好的去理解它。
python支持多线程效果还不错,很多方面都用到了python 多线程的知识,我前段时间用python 多线程写了个处理生产者和消费者的问题,把代码贴出来给你看下:#encoding=utf-8
import threading
import random
import time
from Queue import Queue
class Producer(threading.Thread):
def __init__(self, threadname, queue):
threading.Thread.__init__(self, name = threadname)
self.sharedata = queue
def run(self):
for i in range(20):
print self.getName(),'adding',i,'to queue'
self.sharedata.put(i)
time.sleep(random.randrange(10)/10.0)
print self.getName(),'Finished'
# Consumer thread
class Consumer(threading.Thread):
def __init__(self, threadname, queue):
threading.Thread.__init__(self, name = threadname)
self.sharedata = queue
def run(self):
for i in range(20):
print self.getName(),'got a value:',self.sharedata.get()
time.sleep(random.randrange(10)/10.0)
print self.getName(),'Finished'
# Main thread
def main():
queue = Queue()
producer = Producer('Producer', queue)
consumer = Consumer('Consumer', queue)
print 'Starting threads ...'
producer.start()
consumer.start()
producer.join()
consumer.join()
print 'All threads have terminated.'
if __name__ == '__main__':
main()
如果你想要了解更多的python 多线程知识可以点下面的参考资料的地址,希望对有帮助!
参考资料:http://www.360doc.com/showweb/0/0/44729013.aspx
参考技术A #!/usr/bin/python#encoding=utf-8
import threading
import time
class ThreadDemo(threading.Thread):
def __init__(self, index, create_time): #线程构造函数
threading.Thread.__init__(self)
self.index = index
self.create_time = create_time
def run(self): #具体的线程运行代码
time.sleep(1) #休眠1秒钟
print (time.time()-self.create_time),"\t",self.index
print "Thread %d exit..." % (self.index)
for index in range(5):
thread = ThreadDemo (index, time.time())
thread.start() #启动线程
print "Main thread exit..."
这是一个例子,我最近也在学习这个..希望能够帮助到你.. 参考技术B 谁说Python多线程支持不好,比起Ruby,比起Perl,好的不要太多。
python有很多实现多线程的方法:
1.挂锁
2.Queue 队列
3.信号机
也可以自己构建循环缓冲区
我自己总结的构建线程的一些思路:
抽象出共享空间,就是读线程和写线程均要访问的那块区域--临界区域,在这个对象里面设置读方法和写方法,并挂锁,也就说不能有2个或者2个以上的线程同时操作共享区域,挂锁 的时候注意死锁问题。
这就是基本的线程同步了,如果要加上缓冲就要考虑记录每个线程操作到什么位置,就是位置信息。
代码不贴了,看我blog里面有几个写Python的
http://hi.baidu.com/linuxbird
只要记得几个思路就可以了 参考技术C python对多线程支持的不太好,建议不要去研究把
以上是关于python 多线程的主要内容,如果未能解决你的问题,请参考以下文章