打印内部函数在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!