如何使用python的多处理modu

2024-09-29 01:33:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的是英特尔奔腾(R)双核E5700@3.00GHz,2GB内存。 我正在学习Python的multiprocessing模块。我写了一个简单的程序来执行加法运算,但它不起作用;我只是核心2的一部分。我的电脑或代码有问题吗?在

import multiprocessing
print "number of core ",multiprocessing.cpu_count()



def calc(a,b):
    c= a+b
    return c

if __name__ =='__main__':

    p1 = multiprocessing.Process(target=calc,args=(3,5) )
    p1.start()
    p2 = multiprocessing.Process(target=calc,args=(2,2) )
    p2.start()



p1.join()
p2.join()

Tags: 模块内存程序targetargscalcmultiprocessingprocess
3条回答

calc函数中,需要将return更改为print。在我的四核机器(运行OSX Mavericks)上,这是我在终端中运行脚本时的输出。您还应该将p1.join()和{}作为if __name__ == "__main__的一部分。在

Last login: Sun Feb 15 15:47:18 on ttys001
imac:~ zinedine$ cd '/Users/zinedine/Documents/' && '/usr/local/bin/pythonw'
'/Users/zinedine/Documents/example.py'  && echo Exit status: $? && exit 1
number of cores  4
8
4
Exit status: 0
logout

[Process completed]

我在终端使用的代码。。。在

^{pr2}$

在使用Python Launcher.app之后,它在终端中打开并给出我上面给出的输出。。。在

我建议你用Queue。看这个例子:

from multiprocessing import Queue, Process

def calc(a, b, queue):
    queue.put(a + b)

if __name__ == '__main__':
    queue = Queue()
    p1 = Process(target = calc, args = (4, 4, queue,))
    p2 = Process(target = calc, args = (4, 4, queue,))
    p1.start()
    p2.start()
    result_1 = queue.get()
    result_2 = queue.get()
    print(result_1, result_2)
    p1.join()
    p2.join()
    input()

>>> 8 8

动态相同的代码:

^{pr2}$

一切都很顺利,包括我在pycharm下的calc程序,唯一的问题是IDE,我使用的是pyscripter

相关问题 更多 >