【python】关于进程和线程的一些基础概念知识
关于进程和线程的一些基础概念知识
线程:
在线程中的内存是共享的
def yz(arg,i): arg.append(i) print("arg的变化",arg) arg=list()#在线程内存是共享的,所以arg在每个线程里都是共享的 for i in range(10): t=threading.Thread(target=yz,args=(arg,i)) t.start() 运行的结果: arg的变化 [0] arg的变化 [0, 1] arg的变化 [0, 1, 2] arg的变化 [0, 1, 2, 3] arg的变化 [0, 1, 2, 3, 4] arg的变化 [0, 1, 2, 3, 4, 5] arg的变化 [0, 1, 2, 3, 4, 5, 6] arg的变化 [0, 1, 2, 3, 4, 5, 6, 7] arg的变化 [0, 1, 2, 3, 4, 5, 6, 7, 8] arg的变化 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
进程:
进程的数据是不共享的,每个子进程的内存都是独立的,如果需要实现进程间的数据共享,则需要使用multiprocessing中的Value()或Array()或Manager
证明进程不共享的代码例子 from multiprocessing import Process,Manager def yz(a,i): a.append(i) print("这时的a",a) if __name__=="__main__": a=list() for i in range(10): t=Process(target=yz,args=(a,i)) t.start() t.join() 运行的结果为: 这时的a [0] 这时的a [1] 这时的a [2] 这时的a [3] 这时的a [4] 这时的a [5] 这时的a [6] 这时的a [7] 这时的a [8] 这时的a [9]
在这里说明一下join()的作用
join()是让调用了join方法的进程执行完毕后才能执行后续的代码,否则一直阻塞住

浙公网安备 33010602011771号