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 cookielib 再结果python urllib 写一个多线程下载网页的脚本应该没什么问题了 作者:老王@python python教程 老王python,提供pythn相关的python教程和python下载,希望大家能够喜欢