日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python pp 库实现并行计算

發布時間:2025/4/5 python 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python pp 库实现并行计算 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

為什么 用pp 做并行計算
答:“簡單”

""" Created on Thu Oct 19 11:11:45 2017@author: Administrator """#-*- 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 Falseif n == 2:""return Truemax = int(math.ceil(math.sqrt(n)))i = 2while i <= max:if n % i == 0:return Falsei += 1return True def SumPrimes(n):for i in range(15):sum([x for x in range(2,n) if IsPrime(x)])"""計算從2-n之間的所有素數之和"""return sum([x for x in range(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 workersjob_server = pp.Server(ncpus, ppservers=ppservers) else:# Creates jobserver with automatically detected number of workersjob_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]for input, job in jobs:(input,job())#print ("Sum of primes below", input, "is", job()) print ("多線程下執行耗時: ", time.time() - start_time, "s")job_server.print_stats() pp 可以用的工作核心線程數 4 workers 多線程下執行耗時: 23.168389320373535 s Job execution statistics:job count | % of all jobs | job time sum | time per job | job server8 | 100.00 | 89.4352 | 11.179397 | local Time elapsed since server creation 23.169389247894287 0 active tasks, 4 cores

我的工作中應用,需要多次調用函數save_to_mongo
主函數save_to_mongo需要調用的函數:

function=(common_rent_price,add_block,add_room,take_location,
some_district_information,neighbor,
most_frecuncy_rent,mean_rent_price,
no_source_price,block_price,
block_rule,RENT_no_data_mostblock_price,
region_district_list,add_rent_type,)

需要導入的庫:
stock=(“os”,”collections”,”pymongo”,”numpy”,”pandas”,)
job:

jobs = [(input, job_server.submit(save_to_mongo,(ct,rl,input,20170501), function, stock)) for input in inputs]
運行方式:
for input, job in jobs:
(input,job())

import math, sys, time import ppinputs = plg '''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()<font color='grape' size=4.5>#主函數save_to_mongo需要調用的函數庫 function=(common_rent_price,add_block,add_room,take_location,some_district_information,neighbor,most_frecuncy_rent,mean_rent_price,no_source_price,block_price,block_rule,RENT_no_data_mostblock_price,region_district_list,add_rent_type,)stock=("os","collections","pymongo","numpy","pandas",) jobs = [(input, job_server.submit(save_to_mongo,(ct,rl,input,20170501), function, stock)) for input in inputs]for input, job in jobs:(input,job())print ("Sum of primes below", input, "is", job())#print('index=',disname.index(input)) print ("多線程下執行耗時: ", time.time() - start_time, "s")job_server.print_stats()

需要導入的庫: 在導入庫的時候,應該這樣寫如:
import numpy 在需要調用的函數中 這樣寫 numpy.array([xxx])
而不是這樣:import numpy as np

總結

以上是生活随笔為你收集整理的python pp 库实现并行计算的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。