1、多线程:

  下面讲一个简单用法,这个模块比较简单,但是实际使用中会遇到很多坑

from multiprocessing import process

def go(s):
print "主线程 %s " % s if __name__ == "__main__":
p = process.Process(target=go, args=(2,))
p.start()

 

2、多线程:
  

from threading import Thread

def go(s):
print "%s" % s if __name__ == "__main__":
t = Thread(target=go, args=(3,))
t.start()

  注意点:

    args一定是上面例子中的格式;

    这两个模块在使用方法上相似度很高;

3、线程和进程的区别:

  * 同一个进程内的线程共享代码、数据、文件

  * 在同一个进程内,每个线程有自己的寄存器、栈

4、多个线程操作相同变量的情况:

  当多个线程操作同一个变量,由于线程的执行顺序不确定,所以返回的不会是预期的数据;

  这个时候就需要线程锁;

  注意:lock可以直接放在函数里,包在函数外没用

  操作数据前r.acquire()

  操作数据后r.release()

5、死锁、递归锁:

  一个资源被多个线程同时使用,锁使用不当(很容易出现)导致多个线程竞争资源,都获取不到资源,造成死锁;

  rlock(),递归锁,和lock()使用方法相同,但是它会自动计数

6、信号量

  s=Semaphore(3)

  s.accquire()

  s.release()

  升级版的lock,调用accquire()方法一次,计数-1,调用release一次,计数+1

  当计数为0,会等待到其他线程调用release方法,使计数大于0为止;

7、threading.Event

  event.isset()   返回状态

  event.wait()  等待event为True

  event.set()  设置event为True

  event.clear()  恢复event值为False

8、threading.Condition()

  condition = threading.Condition()

  线程a在执行时,竞争线程处于condition.wait(),直到线程a通过condiition.notify("xxxx")通知其他线程,结束等待;

9、threading.Timer()

  指定n秒后结束

未完。。。。。。。

  

  

python 多进程、多线程的更多相关文章

  1. Python 多进程 多线程 协程 I/O多路复用

    引言 在学习Python多进程.多线程之前,先脑补一下如下场景: 说有这么一道题:小红烧水需要10分钟,拖地需要5分钟,洗菜需要5分钟,如果一样一样去干,就是简单的加法,全部做完,需要20分钟:但是, ...

  2. python 多进程/多线程/协程 同步异步

    这篇主要是对概念的理解: 1.异步和多线程区别:二者不是一个同等关系,异步是最终目的,多线程只是我们实现异步的一种手段.异步是当一个调用请求发送给被调用者,而调用者不用等待其结果的返回而可以做其它的事 ...

  3. python 多进程多线程的对比

    link:http://www.cnblogs.com/whatisfantasy/p/6440585.html mark一下,挺详细

  4. Python的多线程(threading)与多进程(multiprocessing )

    进程:程序的一次执行(程序载入内存,系统分配资源运行).每个进程有自己的内存空间,数据栈等,进程之间可以进行通讯,但是不能共享信息. 线程:所有的线程运行在同一个进程中,共享相同的运行环境.每个独立的 ...

  5. python采用 多进程/多线程/协程 写爬虫以及性能对比,牛逼的分分钟就将一个网站爬下来!

    首先我们来了解下python中的进程,线程以及协程! 从计算机硬件角度: 计算机的核心是CPU,承担了所有的计算任务.一个CPU,在一个时间切片里只能运行一个程序. 从操作系统的角度: 进程和线程,都 ...

  6. python 多进程开发与多线程开发

    转自: http://tchuairen.blog.51cto.com/3848118/1720965 博文作者参考的博文:  博文1  博文2 我们先来了解什么是进程? 程序并不能单独运行,只有将程 ...

  7. Python多进程、多线程、协程

    转载:https://www.cnblogs.com/huangguifeng/p/7632799.html 首先我们来了解下python中的进程,线程以及协程! 从计算机硬件角度: 计算机的核心是C ...

  8. Python之多线程和多进程

    一.多线程 1.顺序执行单个线程,注意要顺序执行的话,需要用join. #coding=utf-8 from threading import Thread import time def my_co ...

  9. 也说性能测试,顺便说python的多进程+多线程、协程

    最近需要一个web系统进行接口性能测试,这里顺便说一下性能测试的步骤吧,大概如下 一.分析接口频率 根据系统的复杂程度,接口的数量有多有少,应该优先对那些频率高,数据库操作频繁的接口进行性能测试,所以 ...

  10. 【转】【Python】Python多进程与多线程

    1.1 multiprocessing multiprocessing是多进程模块,多进程提供了任务并发性,能充分利用多核处理器.避免了GIL(全局解释锁)对资源的影响. 有以下常用类: 类 描述 P ...

随机推荐

  1. Android:异步处理之AsyncTask的应用(二)

    前言 在上一篇文章中<Android:异步处理之Handler+Thread的应用(一)>,我们知道Android的UI主线程主要负责处理用户的按键事件.用户的触屏事件以及屏幕绘图事件等: ...

  2. CSS3无前缀脚本prefixfree.js与Animatable使用介绍

    要求 必备知识 本文要求基本了解 JAVASCRIPT 和 和 CSS3 基本知识. 运行环境 桌面端:IE9 +,Opera 10+,火狐3.5 +,Safari 4+和Chrome浏览器;移动端: ...

  3. Nginx缓存配置

    访问我的博客 前言 本文介绍利用 nginx 的 nginx_ngx_cache_purge 模块来实现缓存功能,前几篇文章介绍了 Nginx 的动静分离以及 CDN 技术,在其基础上,再对整个页面进 ...

  4. mysql 根据一张表更新另一张表

    between 是>= and <=,即包含两个边界

  5. Lambda 遍历

    遍历列表元素 using System; using System.Collections.Generic; using System.Linq; using System.Text; using S ...

  6. 在Java的反射中,Class.forName和ClassLoader的区别

    前言 最近在面试过程中有被问到,在Java反射中Class.forName()加载类和使用ClassLoader加载类的区别.当时没有想出来后来自己研究了一下就写下来记录一下. 解释 在java中Cl ...

  7. Git 使用SSH密钥操作

    git使用ssh密钥 git支持https和git两种传输协议,github分享链接时会有两种协议可选: git协议链接图例 : ↓ https协议链接图例:↓ git使用https协议,每次pull ...

  8. 浅析Java源码之HashMap

    写这篇文章还是下了一定决心的,因为这个源码看的头疼得很. 老规矩,源码来源于JRE1.8,java.util.HashMap,不讨论I/O及序列化相关内容. 该数据结构简介:使用了散列码来进行快速搜索 ...

  9. 在ASP.NET MVC中使用Grid.mvc

    很久没有写ASP.NET的博文了,专心工作嘛,今天写一点MVC的博文,也是自己练习来的,是使用grid.mvc来显示数据. 首先打开Manage Nuget Packages,搜索grid.mvc并安 ...

  10. 根据ip获取地点

    #region 根据ip获取地点 /// 获取Ip归属地 /// </summary> /// <param name="ip">ip</param& ...