多线程时可以理解为重新克隆非代码运行,这个克隆的代码会被全部执行,因此如果不想被执行的必须放在:
import multiprocessing
import threading
import os
print("1----------", os.getpid())
def print_cube(num):
print("print_cube ", os.getpid())
print("Cube: {}".format(num * num * num))
print("2----------", os.getpid())
def print_square(num):
print("print_square ", os.getpid())
print("Square: {}".format(num * num))
print("3----------", os.getpid())
if __name__ == "__main__":
print(os.getpid())
# creating processes
p1 = multiprocessing.Process(target=print_square, args=(10, ))
p2 = multiprocessing.Process(target=print_cube, args=(10, ))
# p1 = threading.Thread(target=print_square, args=(10, ))
# p2 = threading.Thread(target=print_cube, args=(10, ))
# starting process 1&2
p1.start()
p2.start()
# wait until process 1&2 is finished
p1.join()
p2.join()
# both processes finished
print("Done!")