Python 用于计算pi的多处理代码永不结束
我想计算π。程序很简单:Python 用于计算pi的多处理代码永不结束,python,multiprocessing,pi,Python,Multiprocessing,Pi,我想计算π。程序很简单: 做一个1x1的正方形,并在正方形中画一个圆。然后除以4 取两个随机值(x,y) 如果x2+y2≤ 比圆中的点多1 重复上述N次 计算内部点(我称之为K)并除以所有执行次数,然后乘以4。(4*K/N==Pi) 迭代次数越多,计算越精确 为了实现快速,我使用了多处理库。但是多处理代码永远不会完成。有什么问题吗 import timeit start = timeit.default_timer() import random from multiprocessing im
import timeit
start = timeit.default_timer()
import random
from multiprocessing import Pool
N = 1000000
process_num = 4
def make_pi(end):
count_inbound = 0
for x in range(end):
the_x = random.random()
the_y = random.random()
if((the_x**2 + the_y**2) <= 1):
count_inbound += 1
return count_inbound
# Multiprocessing.
p = Pool(processes = process_num)
count_in = p.map(make_pi, [N/process_num for x in range(process_num)])
print(4*sum(count_in)/N)
# Normal.
##print(4*make_pi(N)/N)
stop = timeit.default_timer()
print(stop - start)
import timeit
start=timeit.default\u timer()
随机输入
来自多处理导入池
N=1000000
进程数=4
def make_pi(结束):
入站计数=0
对于范围内的x(结束):
_x=random.random()
_y=random.random()
如果((x**2+y**2)我已经在我的mac上测试了相同的代码。
它很好用
多工序为0.25,单工序为0.45
换衣服
[N/process\u num用于范围内的x(process\u num)]
到
[int(N/process\u num表示范围内的x(process\u num)]
自动回答
问题是流程需要关闭
所以我只加了一行
if __name__ == "__main__":
比我的代码还管用
import timeit
start = timeit.default_timer()
import random
from multiprocessing import Pool
N = 1000000
process_num = 4
def make_pi(end):
count_inbound = 0
for x in range(end):
the_x = random.random()
the_y = random.random()
if((the_x**2 + the_y**2) <= 1):
count_inbound += 1
return count_inbound
if __name__ == "__main__":
#multiprocessing code
p = Pool(processes = process_num)
count_in = p.map(make_pi, [int(N/process_num) for x in range(process_num)])
print(4*sum(count_in)/N)
#normal code
#print(4*make_pi(N)/N)
stop = timeit.default_timer()
print(stop - start)
import timeit
start=timeit.default\u timer()
随机输入
来自多处理导入池
N=1000000
进程数=4
def make_pi(结束):
入站计数=0
对于范围内的x(结束):
_x=random.random()
_y=random.random()
如果((x**2+y**2)您遇到运行时错误:运行时错误:在当前进程完成引导阶段之前,已尝试启动新进程。
我在window10环境中,我的代码在无限循环中。您的解决方案中也存在同样的问题。