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隨筆】之【多程式並行統計多個cvs檔案行數】Python並行
- [python] 多程式程式設計Python程式設計
- Python多程式程式設計Python程式設計
- Python 並不合適職場程式設計,SPL 才行Python程式設計
- C#並行,多執行緒程式設計並行集合和PLINQ的例項講解並行執行緒程式設計
- Python的多工程式設計Python程式設計
- Python並行程式設計(二):多執行緒鎖機制利用Lock與RLock實現執行緒同步Python並行行程程式設計執行緒
- python中的多工程式設計Python程式設計
- Python多工程式設計介紹Python程式設計
- Python 並不適合職場程式設計Python程式設計
- JavaScript多執行緒程式設計JavaScript執行緒程式設計
- 用pyinstaller打包你的Python程式並繫結CPUPython
- C#多執行緒(四)並行程式設計篇之結構化C#執行緒並行行程程式設計
- .NET併發程式設計-資料並行程式設計並行
- Python多程式程式設計基礎——圖文版Python程式設計
- 多執行緒程式設計ExecutorService用法執行緒程式設計
- 29. 多執行緒程式設計執行緒程式設計
- python程式設計怎麼換行Python程式設計
- 並行程式設計並行行程程式設計
- Python 多執行緒多程式Python執行緒
- 併發程式設計-8.並行資料結構和並行Linq程式設計並行資料結構
- GPU程式設計(四):並行規約優化GPU程式設計並行優化
- Java並行流:一次搞定多執行緒程式設計難題,讓你的程式飛起來!Java並行執行緒程式設計
- Python並行程式設計(六):多執行緒同步之queue(佇列)實現生產者-消費者模型Python並行行程程式設計執行緒佇列模型
- Python多執行緒程式設計深度探索:從入門到實戰Python執行緒程式設計
- 深入理解多執行緒程式設計執行緒程式設計
- [02] 多執行緒邏輯程式設計執行緒程式設計
- Linux C++ 多執行緒程式設計LinuxC++執行緒程式設計
- iOS開發-多執行緒程式設計iOS執行緒程式設計
- Task+ConcurrentQueue多執行緒程式設計執行緒程式設計
- GPU程式設計--CPU和GPU的設計區別GPU程式設計
- 使用 VS Code 進行 Python 程式設計Python程式設計
- .NET併發程式設計-任務函式並行程式設計函式並行