python并行计算包_Parallel Python 并行计算,官网实例,anaconda 环境

# -*- coding: utf-8 -*-

#Spyder Editor

#Example #1: sum_primes.py

#!/usr/bin/python

# File: sum_primes.py

# Author: VItalii Vanovschi

# Desc: This program demonstrates parallel computations with

pp module

# It calculates the sum of prime numbers below a given integer

in parallel

# Parallel Python Software:

http://www.parallelpython.com

import math, sys, time

import pp

http://www.parallelpython.com/content/view/17/31/

def isprime(n):

"""如果是素数返回true,其他则返回False"""

if not isinstance(n,

int):

raise TypeError("argument passed to is_prime is

not of 'int' type")

if n < 2:

return False

if n == 2:

return True

max =

int(math.ceil(math.sqrt(n)))

i = 2

while i <= max:

if n % i == 0:

return

False

i += 1

return True

def sum_primes(n):

"""Calculates sum of all

primes below given integer n"""

return sum([x for x in

xrange(2,n) if isprime(x)])

print """Usage: python sum_primes.py [ncpus]

[ncpus] - the number of

workers to run in parallel,

if omitted it will be

set to the number of processors in the system

"""

# tuple of all parallel python servers to connect with

ppservers = ()

#ppservers = ("10.0.0.1",)

if len(sys.argv) > 1:

ncpus =

int(sys.argv[1])

# Creates jobserver with

ncpus workers

job_server =

pp.Server(ncpus, ppservers=ppservers)

else:

# Creates jobserver with

automatically detected number of workers

job_server =

pp.Server(ppservers=ppservers)

print "Starting pp with", job_server.get_ncpus(),

"workers"

# Submit a job of calulating sum_primes(100) for

execution.

# sum_primes - the function

# (100,) - tuple with arguments for sum_primes

# (isprime,) - tuple with functions on which function

sum_primes depends

# ("math",) - tuple with module names which must be imported

before sum_primes execution

# Execution starts as soon as one of the workers will become

available

job1 = job_server.submit(sum_primes, (100,), (isprime,),

("math",))

# Retrieves the result calculated by job1

# The value of job1() is the same as sum_primes(100)

# If the job has not been finished yet, execution will wait

here until result is available

result = job1()

print "Sum of primes below 100 is", result

start_time = time.time()

# The following submits 8 jobs and then retrieves the

results

inputs = (100000, 100100, 100200, 100300, 100400, 100500,

100600, 100700)

jobs = [(input, job_server.submit(sum_primes,(input,),

(isprime,), ("math",))) for input in inputs]

for input, job in jobs:

print "Sum of primes

below", input, "is", job()

print "Time elapsed: ", time.time() - start_time, "s"

job_server.print_stats()

# Parallel Python Software:

http://www.parallelpython.com

输出结果:

Usage: python sum_primes.py [ncpus]

[ncpus] - the number of

workers to run in parallel,

if omitted it will be

set to the number of processors in the system

Starting pp with 2 workers

Sum of primes below 100 is 1060

Sum of primes below 100000 is 454396537

Sum of primes below 100100 is 454996777

Sum of primes below 100200 is 455898156

Sum of primes below 100300 is 456700218

Sum of primes below 100400 is 457603451

Sum of primes below 100500 is 458407033

Sum of primes below 100600 is 459412387

Sum of primes below 100700 is 460217613

Time elapsed:  4.26600003242 s

Job execution statistics:

job count | % of all jobs | job time sum |

time per job | job server

9 |  100.00 |

7.6720 |

0.852444 | local

Time elapsed since server creation 4.26600003242

0 active tasks, 2 core

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值