Python threading模块
python是支持多线程的,并且是native的线程。主要是通过thread和threading这两个模块来实现的。thread是比较底层的模 块,threading是对thread做了一些包装的,可以更加方便的被使用。这里需要提一下的是python对线程的支持还不够完善,不能利用多 CPU,但是下个版本的python中已经考虑改进这点,让我们拭目以待吧。 threading模块里面主要是对一些线程的操作对象化了,创建了叫Thread的class。一般来说,使用线程有两种模式,一种是创建线程要执行的 函数,把这个函数传递进Thread对象里,让它来执行;另一种是直接从Thread继承,创建一个新的class,把线程执行的代码放到这个新的 class里。我们来看看这两种做法吧。
[代码] [Python]代码
02 |
import string, threading, time |
07 |
threadname = threading.currentThread().getName() |
09 |
for x in xrange ( 0 , int (a)): |
15 |
print threadname, x, count |
24 |
mutex = threading.Lock() |
26 |
for x in xrange ( 0 , num): |
27 |
threads.append(threading.Thread(target = thread_main, args = ( 10 ,))) |
36 |
if __name__ = = '__main__' : |
[代码] [Python]代码
05 |
class Test(threading.Thread): |
06 |
def __init__( self , num): |
07 |
threading.Thread.__init__( self ) |
12 |
threadname = threading.currentThread().getName() |
14 |
for x in xrange ( 0 , int ( self ._run_num)): |
18 |
print threadname, x, count |
21 |
if __name__ = = '__main__' : |
27 |
mutex = threading.Lock() |
29 |
for x in xrange ( 0 , num): |
30 |
threads.append(Test( 10 )) |
|