多線程樣例:
import threading import time def run(name): print "i am mult-threding",i time.sleep(2) for i in range(20): t=threading.Thread(target=run,args=(i,)) t.start() class mythread(threading.Thread): def __init__(self,num): threading.Thread.__init__(self) self.num=num def run(self): print "i am thread %s"% self.num time.sleep(2) print "OK" for i in range(20): t=mythread(i) t.start()###
通過RLOCK方式,解決多線程之間修改共享對象不出問題,使線程的資源獨佔
import threading import time lock=threading.Rlock() def run(name): lock.acquire() print "i am mult-threding",i lock.release() time.sleep(2) for i in range(20): t=threading.Thread(target=run,args=(i,)) t.start()###連接池
#!/usr/bin/env python
from multiprocessing import Pool
import time
def sayHi(a):
time.sleep(5)
return a**a
if __name__ =="__main__":
p=Pool(processes=5)
result=p.apply_async(sayHi,[10])
print result.get()
一個池子啓用5個線程池,且異步一次返回結果
可以用for循環使用多次異步:
#!/usr/bin/env python
from multiprocessing import Pool
import time
def sayHi(a):
time.sleep(5)
return a**a
p=Pool(processes=5)
result_list=[]
for i in range(100):
result_list.append(p.apply_async(sayHi,[i]))
for j in result_list:
print j.get()