为什么python多进程中,子进程会重复执行主进程代码,fork机制到底是怎么执行的
代码例子如下,求大神解疑:我的疑惑是在子进程为什么会在全局代码块上执行了一次 write 的操作,但是没进行print操作
#一个有趣的例子:
#正确的输出是: 主 子 主
#你想想为什么呢?
# 为什么打印输出 --代码块--,--子--- ,而文件输出是 主 子 主 ???
import os
from multiprocessing import Process,get_start_method,set_start_method
file=open('./name.txt','w+',encoding='utf-8')
pid =str(os.getpid())
file.write("主:"+pid+"\n")
print("----代码块-----")
def write_info():
pid = str(os.getpid())
file.write("子:"+pid+'\n')
print("------子线程------")
file.flush()
if __name__ == '__main__':
set_start_method('fork')
p1=Process(target=write_info)
p1.start()
# print(get_start_method())
p1.join()
file.close()
终端输出结果:
文件内容:
推荐文章: