使用threading的繼承Treading的方法
#coding:utf8'''def isprime(m): #質數是指只能被1和它本身整除的數 for i in range(2, m/2+1): if m % i == 0: return False return Trueif __name__ == '__main__': print filter(isprime, range(2,101))'''#這裡就分100線程試下,用class的方式重寫import threading rs = [] #用來成放滿足條件的數字,最後列印用lock = threading.RLock()class Isprime(threading.Thread): '''判斷一個數是不是質數''' def __init__(self,num,name=None): threading.Thread.__init__(self) #不要忘記 self.num = num self.isstop = False def run(self): global rs,lock isprime = False m = self.num for i in range(2, m/2+1): if m % i == 0: isprime = True break lock.acquire() #加鎖控制 if not isprime: rs.append(m) lock.release() def main(): global rs threads = [] #裝載線程 for i in range(2,101): threads.append(Isprime(i)) #啟動線程 for x in threads: x.start() #阻塞線程直到結束 for s in threads: x.join() #列印結果 print rs print len(rs) if __name__=='__main__': main()
結果如:
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
25