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 多线程的主要内容,如果未能解决你的问题,请参考以下文章

python多线程作用

python 多线程

Python多线程总结

python 多线程状态

python3.7多线程代码不执行?

python循环怎么用多线程去运行