python编程实现通过多线程的方式来求2000~3000之间的所有的素数
2017-08-02 19:47
351 查看
不用线程:
filter(function, iterable)
这个函数的功能是过滤出iterable中所有以元素自身作为参数调用function时返回True或bool(返回值)为True的元素并以列表返回.
def f(x):
return x > 5
filter(f, range(10))
>>[6,7,8,9]
线程:
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的元素并以列表返回.
def f(x):
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()
相关文章推荐
- Java中实现多线程的两种方式之间的区别
- Java中实现多线程的两种方式之间的区别
- Java中有两种实现多线程的方式以及两种方式之间的区别
- Java中实现多线程的两种方式之间的区别
- java 多线程实现方式Thread和Runnable之间差异
- Java实现多线程的四种方式以及四种方式之间的区别
- Java中有两种实现多线程的方式以及两种方式之间的区别
- mysql通过gitd方式实现多线程主从复制
- Java中有两种实现多线程的方式以及两种方式之间的区别
- Java中有两种实现多线程的方式以及两种方式之间的区别
- Java中有两种实现多线程的方式以及两种方式之间的区别
- C#l练习(用方法来实现:①判断一个给定的整数是否为“质数”。②计算1-100之间的所有质数(素数)的和
- 判断101-200之间有多少个素数,并输出所有素数(python实现)
- 通过java递归思想实现以树形方式展现出该目录中的所有子目录和文件
- Java中有两种实现多线程的方式以及两种方式之间的区别
- 通过java递归思想实现以树形方式展现出该目录中的所有子目录和文件
- 判断101-200之间有多少个素数,并输出所有素数 Java实现
- Java中有两种实现多线程的方式以及两种方式之间的区别
- Java中有两种实现多线程的方式以及两种方式之间的区别
- 多进程和多线程之间的通信方式及通信实现步骤小结