摘要: 同步应用 多个线程有序执行 运行结果: 总结 可以使用互斥锁完成多个任务,有序的进程工作,这就是线程的同步 阅读全文
posted @ 2018-05-14 17:37 瀛洲小李 阅读(167) 评论(1) 推荐(1) 编辑
摘要: 多线程-非共享数据 对于全局变量,在多线程中要格外小心,否则容易造成数据错乱的情况发生 1. 非全局变量是否要加锁呢? 在多线程开发中,全局变量是多个线程都共享的数据,而局部变量等是各自线程的,是非共享的 阅读全文
posted @ 2018-05-14 17:34 瀛洲小李 阅读(205) 评论(0) 推荐(1) 编辑
摘要: 同步的概念 1. 多线程开发可能遇到的问题 假设两个线程t1和t2都要对num=0进行增1运算,t1和t2都各对num修改10次,num的最终的结果应该为20。 但是由于是多线程访问,有可能出现下面情况: 在num=0时,t1取得num=0。此时系统把t1调度为”sleeping”状态,把t2转换为 阅读全文
posted @ 2018-05-14 17:27 瀛洲小李 阅读(161) 评论(0) 推荐(1) 编辑
摘要: 进程VS线程 功能 进程,能够完成多任务,比如 在一台电脑上能够同时运行多个QQ 线程,能够完成多任务,比如 一个QQ中的多个聊天窗口 定义的不同 进程是系统进行资源分配和调度的一个独立单位. 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不 阅读全文
posted @ 2018-05-14 16:57 瀛洲小李 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 多线程-共享全局变量 列表当做实参传递到线程中 总结: 在一个进程内的所有线程共享全局变量,能够在不适用其他方式的前提下完成多线程之间的数据共享(这点要比多进程要好) 缺点就是,线程是对全局变量随意遂改可能造成多线程之间对全局变量的混乱(即线程非安全) 阅读全文
posted @ 2018-05-14 16:52 瀛洲小李 阅读(152) 评论(0) 推荐(1) 编辑
摘要: threading注意点 1. 线程执行代码的封装 通过上一小节,能够看出,通过使用threading模块能完成多任务的程序开发,为了让每个线程的封装性更完美,所以使用threading模块时,往往会定义一个新的子类class,只要继承threading.Thread就可以了,然后重写run方法 示 阅读全文
posted @ 2018-05-14 16:44 瀛洲小李 阅读(165) 评论(0) 推荐(1) 编辑
摘要: 多线程-threading python的thread模块是比较底层的模块,python的threading模块是对thread做了一些包装的,可以更加方便的被使用 1. 使用threading模块 单线程执行 多线程执行 2. 主线程会等待所有的子线程结束后才结束 3. 查看线程数量 阅读全文
posted @ 2018-05-14 16:39 瀛洲小李 阅读(227) 评论(0) 推荐(0) 编辑
摘要: 进程池Pool 当需要创建的子进程数量不多时,可以直接利用multiprocessing中的Process动态成生多个进程,但如果是上百甚至上千个目标,手动的去创建进程的工作量巨大,此时就可以用到multiprocessing模块提供的Pool方法。 初始化Pool时,可以指定一个最大进程数,当有新 阅读全文
posted @ 2018-05-14 16:25 瀛洲小李 阅读(187) 评论(0) 推荐(0) 编辑
摘要: multiprocessing 如果你打算编写多进程的服务程序,Unix/Linux无疑是正确的选择。由于Windows没有fork调用,难道在Windows上无法用Python编写多进程的程序? 由于Python是跨平台的,自然也应该提供一个跨平台的多进程支持。multiprocessing模块就 阅读全文
posted @ 2018-05-14 16:19 瀛洲小李 阅读(299) 评论(0) 推荐(0) 编辑
摘要: 多次fork问题 如果在一个程序,有2次的fork函数调用,是否就会有3个进程呢? 父子进程的执行顺序 父进程、子进程执行顺序没有规律,完全取决于操作系统的调度算法 阅读全文
posted @ 2018-05-14 16:12 瀛洲小李 阅读(245) 评论(0) 推荐(0) 编辑