打印内部函数在python中不起作用

我有下面的python代码。当我执行代码时,它总是只显示“程序结束!”。但是没有打印在两个定义中编码的打印语句。是因为 multiprocessing.Process 吗?

注意:我在我的个人笔记本电脑上运行此代码(在 Jupyter notebook 和 Spyder 中都尝试过)

import multiprocessing 
  
def print_cube(num): 
    aa1 = num * num * num
    print("Cube: ",  aa1) 
  
def print_square(num): 
    bb1 = num * num
    print("Square: ", bb1) 
  
def main(): 
    # creating processes 
    p1 = multiprocessing.Process(target=print_square, args=(10, )) 
    p2 = multiprocessing.Process(target=print_cube, args=(10, )) 
  
    # starting process 1 
    p1.start() 

    # starting process 2 
    p2.start() 
    
    # Assumed both processes are finished 
    print("End of the program!") 

main()  

回答

你打电话start,但从不打电话join。这意味着您的程序会启动两个进程,但不会等待它们完成(因此它们没有任何可输出的地方)。换句话说,您的程序在子进程/函数有机会完成执行之前退出。

添加

p1.join()
p2.join()
# Assumed both processes are finished
print("End of the program!")

然后输出是

Cube:  1000
Square:  100
End of the program!


以上是打印内部函数在python中不起作用的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>