Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Python与Pool.Map()进行并行编程比较MAC OSX&;视窗10_Python_Python Multiprocessing - Fatal编程技术网

用Python与Pool.Map()进行并行编程比较MAC OSX&;视窗10

用Python与Pool.Map()进行并行编程比较MAC OSX&;视窗10,python,python-multiprocessing,Python,Python Multiprocessing,在Python3.X中搜索各种可能的多处理之后,这个程序非常简单 在MAC和Windows上运行该程序可获得不同的结果。MAC的并行处理比串行处理花费的时间更少。我阅读了关于IPC开销等的各种注释,因为这是一个需要处理的微不足道的函数,但比为什么在MacOSX上的结果要好得多 基本上,了解MacOSX体系结构以处理Pool.MAP()的人可以提供输入。提前谢谢 **On MAC OSX** cpu_count() = 4 Creating pool with 4 processes pool =

在Python3.X中搜索各种可能的多处理之后,这个程序非常简单

在MAC和Windows上运行该程序可获得不同的结果。MAC的并行处理比串行处理花费的时间更少。我阅读了关于IPC开销等的各种注释,因为这是一个需要处理的微不足道的函数,但比为什么在MacOSX上的结果要好得多

基本上,了解MacOSX体系结构以处理Pool.MAP()的人可以提供输入。提前谢谢

**On MAC OSX**
cpu_count() = 4
Creating pool with 4 processes
pool = <multiprocessing.pool.Pool object at 0x1019d96a0>
Time for y_parallel =  2.866562843322754
Time for y_serial =  10.207499027252197


**On Windows**
cpu_count() = 4
Creating pool with 4 processes
pool = <multiprocessing.pool.Pool object at 0x031A1CD0>
Time for y_parallel =  13.155309915542603
Time for y_serial =  10.025831460952759

    import multiprocessing
    import time

    def f(x):
         time.sleep(0.1)
         return x+1

    # Serially adding 100 numbers (X+1) to y_serial
    y_serial = []
    x = range(100)
    startTime_serial = time.time()
    #for i in x:
    #    y_serial = y_serial + [f(i)]
    y_serial += map(f,x)
    endTime_serial = time.time()


    #Letting Pool allocate processes through map.Pool
    if __name__ == '__main__':
        print('cpu_count() = %d' % multiprocessing.cpu_count())
        PROCESSES = multiprocessing.cpu_count()
        print('Creating pool with %d processes' % PROCESSES)
        pool = multiprocessing.Pool()
        print('pool = %s' % pool)
        startTime_parallel = time.time()
        y_parallel = pool.map(f,x)
        pool.close()
        pool.join()
        endTime_parallel = time.time()
        print("Time for y_parallel = ", endTime_parallel - startTime_parallel)
        print ("Time for y_serial = ", endTime_serial - startTime_serial)
        print ("y_parallel", y_parallel)
        print ("y_serial=", y_serial)
MAC OSX上的**** cpu_计数()=4 创建包含4个进程的池 池= y_并联时间=2.866562843322754 y_序列的时间=10.20749027252197 **在窗户上** cpu_计数()=4 创建包含4个进程的池 池= y_并联时间=13.155309915542603 y_序列的时间=10.025831460952759 导入多处理 导入时间 def f(x): 睡眠时间(0.1) 返回x+1 #连续向y_序列添加100个数字(X+1) y_serial=[] x=范围(100) startTime\u serial=time.time() #对于x中的i: #y_serial=y_serial+[f(i)] y_serial+=map(f,x) endTime_serial=time.time() #允许池通过map.Pool分配进程 如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu': 打印('cpu\u count()=%d'%multiprocessing.cpu\u count()) 进程=多处理。cpu\u计数() 打印('正在创建具有%d个进程“%1个进程”的池) 池=多处理。池() 打印('pool=%s'%pool] startTime\u parallel=time.time() y_parallel=pool.map(f,x) pool.close() pool.join() endTime_parallel=time.time() 打印(“y_并行时间=”,endTime_并行-startTime_并行) 打印(“y_序列的时间=,endTime_序列-startTime_序列) 打印(“y_平行”,y_平行) 打印(“y_serial=”,y_serial)