python | 多进程计算

def hhh(i):
    return i ** 3
    
pool = Pool(processes=3)
h1 = pool.map(hhh, iterable=[1, 2, 3, 4])
print(h1)

[1, 8, 27, 64]

h2 = pool.map_async(hhh, iterable=[1, 2, 3, 4])
for i in h2.get():
    print(i)

1
8
27
64

import time
from multiprocessing import Pool
def run(msg):
    print('msg:%s' %msg)
    # 程序随眠3秒,
    time.sleep(3)
    print("end")

def callback():
    print("i am callback")
print("开始执行主程序")
start_time=time.time()
# 使用进程池创建子进程
size=3
pool=Pool(size)
print("开始执行子进程")
for i in range(size):
    pool.apply(run, kwds={"msg":1})
#     pool.apply_async(run, kwds={"msg":1},callback=callback())


print("主进程结束耗时%s"%(time.time() - start_time))

开始执行主程序
msg:1
开始执行子进程
end
msg:1
end
msg:1
end
主进程结束耗时9.1600182056427

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
可以使用Python多进程和蒙特卡罗方法来计算圆周率。首先,需要导入random和multiprocessing库。然后,可以定义一个函数estimate_pi(n),其中n是指定的采样点数量。在这个函数中,通过生成随机的x和y坐标,并判断这些坐标是否在单位圆内来估计圆周率。最后,通过将估计结果相加并除以进程数量来得到最终的估计值。以下是示例代码: ```python import random from multiprocessing import Pool def estimate_pi(n): num_points_inside_circle = 0 for _ in range(n): x = random.uniform(-1, 1) y = random.uniform(-1, 1) if x**2 + y**2 <= 1: num_points_inside_circle += 1 return 4 * num_points_inside_circle / n if __name__ == '__main__': num_processes = 4 num_samples = int(1e8) with Pool(num_processes) as p: results = p.map(estimate_pi, [int(num_samples/num_processes)] * num_processes) print(sum(results) / num_processes) ``` 这段代码使用了4个进程来并行计算圆周率,每个进程使用相同数量的采样点进行估计。最后,将每个进程的估计结果相加并除以进程数量,得到最终的估计值。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [python计算圆周率pi的方法](https://download.csdn.net/download/weixin_38742453/12876486)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Python多线程编程详解](https://blog.csdn.net/Rocky006/article/details/131246514)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ASKCOS

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值