不用线程:
def isprime(m):
#质数是指只能被1和它本身整除的数
for i in range(2, m/2+1):
if m % i == 0:
return False
return True
if __name__ == '__main__':
print filter(isprime, range(2000,3000))
filter(function, iterable)
这个函数的功能是过滤出iterable中所有以元素自身作为参数调用function时返回True或bool(返回值)为True的元素并以列表返回.
这个函数的功能是过滤出iterable中所有以元素自身作为参数调用function时返回True或bool(返回值)为True的元素并以列表返回.
def f(x):
return x > 5
filter(f, range(10))
>>[6,7,8,9]
return x > 5
filter(f, range(10))
>>[6,7,8,9]
线程:
#coding:utf8
import threading
rs = [] #用来成放满足条件的数字,最后打印用
lock = threading.RLock()
class Isprime(threading.Thread):
def __init__(self,num):
threading.Thread.__init__(self) #不要忘记
self.num = num
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(2000,3000):
a=Isprime(i)
threads.append(a)
#启动线程
for x in threads:
x.start()
#阻塞线程直到结束
for s in threads:
x.join()
#打印结果
print rs
print len(rs)
if __name__=='__main__':
main()