[Python]多线程threading -- 100以内素数的查找

来源:互联网 发布:海信电视直播软件 编辑:程序博客网 时间:2024/05/21 10:20

使用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

原创粉丝点击