python 多cpu並行程式設計
python 多執行緒只能算併發,因為它智慧使用一個cpu核心
python 下 pp包支援多cpu平行計算
安裝
pip install pp
使用
#-*- coding: UTF-8 -*-
import math, sys, time
import pp
def IsPrime(n):
"""返回n是否是素數"""
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 SumPrimes(n):
for i in xrange(15):
sum([x for x in xrange(2,n) if IsPrime(x)])
"""計算從2-n之間的所有素數之和"""
return sum([x for x in xrange(2,n) if IsPrime(x)])
inputs = (100000, 100100, 100200, 100300, 100400, 100500, 100600, 100700)
# start_time = time.time()
# for input in inputs:
# print SumPrimes(input)
# print '單執行緒執行,總耗時', time.time() - start_time, 's'
# # 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 "pp 可以用的工作核心執行緒數", job_server.get_ncpus(), "workers"
start_time = time.time()
jobs = [(input, job_server.submit(SumPrimes,(input,), (IsPrime,), ("math",))) for input in inputs]#submit提交任務
for input, job in jobs:
print "Sum of primes below", input, "is", job()# job()獲取方法執行結果
print "多執行緒下執行耗時: ", time.time() - start_time, "s"
job_server.print_stats()#輸出執行資訊
執行結果
pp 可以用的工作核心執行緒數 4 workers
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
多執行緒下執行耗時: 15.4971420765 s
Job execution statistics:
job count | % of all jobs | job time sum | time per job | job server
8 | 100.00 | 60.9828 | 7.622844 | local
Time elapsed since server creation 15.4972219467
0 active tasks, 4 cores
submit 函式定義
def submit(self, func, args=(), depfuncs=(), modules=(), callback=None, callbackargs=(), group='default', globals=None): """Submits function to the execution queue func - function to be executed 執行的方法 args - tuple with arguments of the 'func' 方法傳入的引數,使用元組 depfuncs - tuple with functions which might be called from 'func' 傳入自己寫的方法 ,元組 modules - tuple with module names to import 傳入 模組 callback - callback function which will be called with argument list equal to callbackargs+(result,) as soon as calculation is done callbackargs - additional arguments for callback function group - job group, is used when wait(group) is called to wait for jobs in a given group to finish globals - dictionary from which all modules, functions and classes will be imported, for instance: globals=globals() """
相關文章
- python 多執行緒程式設計Python執行緒程式設計
- Python多執行緒程式設計Python執行緒程式設計
- (Python程式設計 | 系統程式設計 | 並行系統工具 | 程式退出)Python程式設計並行
- Python並行程式設計(七):多程式的基本使用和與多執行緒的差異Python並行行程程式設計執行緒
- Python多執行緒程式設計(二)Python執行緒程式設計
- Python多程序中並行程式設計與程序池Python並行行程程式設計
- Python並行程式設計Python並行行程程式設計
- Python多程式程式設計Python程式設計
- [python] 多程式程式設計Python程式設計
- Python 並不合適職場程式設計,SPL 才行Python程式設計
- 【python隨筆】之【多程式並行統計多個cvs檔案行數】Python並行
- python多執行緒程式設計1— python對多執行緒的支援Python執行緒程式設計
- 第五篇:淺談CPU 並行程式設計和 GPU 並行程式設計的區別並行行程程式設計GPU
- 完數的Java多執行緒並行程式設計-平行計算Java執行緒並行行程程式設計
- C#並行,多執行緒程式設計並行集合和PLINQ的例項講解並行執行緒程式設計
- 5天玩轉C#並行和多執行緒程式設計 —— 第五天 多執行緒程式設計大總結C#並行執行緒程式設計
- 多執行緒程式設計執行緒程式設計
- Python的多工程式設計Python程式設計
- Python並行程式設計(二):多執行緒鎖機制利用Lock與RLock實現執行緒同步Python並行行程程式設計執行緒
- python的學習(七)----多執行緒程式設計(1)Python執行緒程式設計
- Python 並不適合職場程式設計Python程式設計
- JavaScript多執行緒程式設計JavaScript執行緒程式設計
- Boost多執行緒程式設計執行緒程式設計
- UNIX多執行緒程式設計執行緒程式設計
- 多執行緒程式設計(轉)執行緒程式設計
- python中的多工程式設計Python程式設計
- Python多工程式設計介紹Python程式設計
- C#多執行緒(四)並行程式設計篇之結構化C#執行緒並行行程程式設計
- python多執行緒程式設計3: 使用互斥鎖同步執行緒Python執行緒程式設計
- .NET併發程式設計-資料並行程式設計並行
- python多執行緒程式設計5: 條件變數同步Python執行緒程式設計變數
- 5天玩轉C#並行和多執行緒程式設計 —— 第二天 並行集合和PLinqC#並行執行緒程式設計
- 【跟我學Python】第四章. Python多執行緒程式設計Python執行緒程式設計
- GCD 與多執行緒程式設計GC執行緒程式設計
- IOS多執行緒程式設計:概述iOS執行緒程式設計
- C#多執行緒程式設計C#執行緒程式設計
- linux 多執行緒程式設計Linux執行緒程式設計
- 多執行緒程式設計ExecutorService用法執行緒程式設計