2.2.加强篇
其实以前的 linux中是没有线程这个概念的, windows程序员经常使用线程,这一看~方便啊,然后可能是当时程序员偷懒了,就把进程模块改了改(这就是为什么之前说linux下的多进程编程其实没有win下那么“重量级”),弄了个精简版进程==> 线程(内核是分不出 进程和线程的,反正 pcb个数都是一样)
多线程和多进程最大的不同在于,多进程中,同一个变量,各自有一份拷贝存在于每个进程中,互不影响,而多线程中,所有变量都由所有线程共享(全局变量和堆 ==> 线程间共享。进程的栈 ==> 线程平分而独占)
还记得通过 current_thread()获取的线程信息吗?难道线程也没个id啥的?一起看看:(通过 ps-Lfpid来查看LWP)

回顾:进程共享的内容:(回顾:http://www.cnblogs.com/dotnetcrazy/p/9363810.html)
代码(.text)文件描述符(fd)内存映射(mmap)2.2.1.线程同步~互斥锁Lock
线程之间共享数据的确方便,但是也容易出现数据混乱的现象,来看个例子:
立即学习“Python免费学习笔记(深入)”;
代码语言:javascript代码运行次数:0运行复制
from multiprocessing.dummy import threadingnum = 0 # def global numdef test(i): print(f"子进程:{i}") global num for i in range(100000): num += 1def main(): p_list = [threading.Thread(target=test, args=(i, )) for i in range(5)] for i in p_list: i.start() for i in p_list: i.join() print(num) # 应该是500000,发生了数据混乱,结果少了很多if __name__ == '__main__': main()登录后复制
文章来自互联网,只做分享使用。发布者:,转转请注明出处:https://www.dingdanghao.com/article/856306.html
