不使用Python中的多处理打印内容

时间:2018-06-06 09:06:37

标签: python parallel-processing multiprocessing

我只是想从this site运行一个示例,它是以下代码:

from multiprocessing import Process


def square(x):

    for x in numbers:
        print('%s squared  is  %s' % (x, x**2))

if __name__ == '__main__':
        numbers = [43, 50, 5, 98, 34, 35]

    p = Process(target=square, args=('x',))
    p.start()
    p.join()
    print ("Done")

它说如果你运行代码,你应该看到以下结果:

#result
Done
43 squared  is  1849
50 squared  is  2500
5 squared  is  25
98 squared  is  9604
34 squared  is  1156
35 squared  is  1225

但是当我运行此代码时,我只在结果中看到Done,仅此而已。在该教程中使用了Python 2.7,但我有3.6并且我在打印中添加了()

感谢您的帮助

2 个答案:

答案 0 :(得分:2)

您的代码段存在一些问题。

  1. 认同:if __name__ == '__main__':是方形函数的一部分
  2. 函数square应该使用参数numbers而不是x
  3. 传递给流程的参数应为args=(numbers,)
  4. 一旦解决了这一切,你就得到:

    from multiprocessing import Process
    
    
    def square(numbers):
    
        for x in numbers:
            print('%s squared  is  %s' % (x, x**2))
    
    if __name__ == '__main__':
        numbers = [43, 50, 5, 98, 34, 35]
    
        p = Process(target=square, args=(numbers,))
        p.start()
        p.join()
        print ("Done")
    

    正确运行。

    如果在Windows上使用IDLE,要查看输出,则需要从命令行启动IDLE:

    C:\Users\MyName>python -m idlelib
    

    解释in this question

答案 1 :(得分:0)

如果IDLE退出但没有消息,并且未从控制台启动,请尝试从控制台(python -m idlelib)启动并查看是否显示消息。 例如,如果您的python文件在桌面中,您可以编写

C:\用户\ MYNAME> Desktop \ python-file-name -m idlelib

prss win + x并选择command prompt