python中的Lock

 1 #Lock.py
 2 from multiprocessing import Process,Lock
 3 import os
 4
 5 def f(l,i):
 6     l.acquire()
 7     print(‘hello world %d and Ospid is %s...‘ %( i,os.getpid()))
 8     l.release()
 9 if __name__==‘__main__‘:
10     lock = Lock()
11     for num in range(10):
12         Process(target=f,args=(lock,num)).start()

有Lock。

结果

 1 hello world 3 and Ospid is 4852...
 2 hello world 2 and Ospid is 540...
 3 hello world 0 and Ospid is 4160...
 4 hello world 1 and Ospid is 948...
 5 hello world 4 and Ospid is 5272...
 6 hello world 6 and Ospid is 3100...
 7 hello world 7 and Ospid is 3364...
 8 hello world 8 and Ospid is 924...
 9 hello world 9 and Ospid is 5196...
10 hello world 5 and Ospid is 5460...

以下是无Lock

 1 #copy.py
 2 __author__ = ‘liunnis‘
 3 from multiprocessing import Process,Lock
 4 import os
 5
 6 def f(l,i):
 7
 8     print(‘hello world %d and Ospid is %s...‘ %( i,os.getpid()))
 9
10 if __name__==‘__main__‘:
11     lock = Lock()
12     for num in range(10):
13        p = Process(target=f,args=(lock,num))
14        p.start()
15 #       p.join()

结果:

 1 hello world 3 and Ospid is 944...
 2 hello world 1 and Ospid is 4156...
 3 hello world 8 and Ospid is 2136...
 4 hello world 5 and Ospid is 3764...
 5 hello world 6 and Ospid is 4876...
 6 hello world 7 and Ospid is 4976...
 7 hello world 2 and Ospid is 2640...
 8 hello world 0 and Ospid is 1404...
 9 hello world 9 and Ospid is 5748...
10 hello world 4 and Ospid is 4032..
时间: 2024-10-19 06:40:52

python中的Lock的相关文章

Python进阶(3)_进程与线程中的lock(互斥锁、递归锁、信号量)

1.同步锁 (Lock) 当各个线程需要访问一个公共资源时,会出现数据紊乱 例如: 1 import threading,time 2 def sub(): 3 global num #对全局变量进行操作 4 5 temp=num 6 time.sleep(0.001) #模拟线程执行中出现I/o延迟等 7 num=temp-1 #所有线程对全局变量进行减一 8 9 time.sleep(1) 10 11 num=100 12 l=[] 13 14 for i in range(100): 15

python中if __name__ == '__main__':

Using a module's __name__ Example? 8.2.? Using a module's __name__ #!/usr/bin/python # Filename: using_name.py if __name__ == '__main__': print 'This program is being run by itself' else: print 'I am being imported from another module' Output $ pytho

Python 中的进程、线程、协程、同步、异步、回调

进程和线程究竟是什么东西?传统网络服务模型是如何工作的?协程和线程的关系和区别有哪些?IO过程在什么时间发生? 在刚刚结束的 PyCon2014 上海站,来自七牛云存储的 Python 高级工程师许智翔带来了关于 Python 的分享<Python中的进程.线程.协程.同步.异步.回调>. 一.上下文切换技术 简述 在进一步之前,让我们先回顾一下各种上下文切换技术. 不过首先说明一点术语.当我们说"上下文"的时候,指的是程序在执行中的一个状态.通常我们会用调用栈来表示这个状

python中的进程、线程(threading、multiprocessing、Queue、subprocess)

Python中的进程与线程 学习知识,我们不但要知其然,还是知其所以然.你做到了你就比别人NB. 我们先了解一下什么是进程和线程. 进程与线程的历史 我们都知道计算机是由硬件和软件组成的.硬件中的CPU是计算机的核心,它承担计算机的所有任务. 操作系统是运行在硬件之上的软件,是计算机的管理者,它负责资源的管理和分配.任务的调度. 程序是运行在系统上的具有某种功能的软件,比如说浏览器,音乐播放器等. 每次执行程序的时候,都会完成一定的功能,比如说浏览器帮我们打开网页,为了保证其独立性,就需要一个专

python中的线程(zz)

引言 一.线程 1.1 普通的多线程1.2 自定义线程类1.3 线程锁1.3.1 未使用锁1.3.2 普通锁Lock和RLock1.3.3 信号量(Semaphore)1.3.4 事件(Event)1.3.5 条件(condition)1.3 全局解释器锁(GIL)1.4 定时器(Timer)1.5 队列1.5.1 Queue:先进先出队列1.5.2 LifoQueue:后进先出队列1.5.3 PriorityQueue:优先级队列1.5.4 deque:双向队列1.6 生产者消费者模型1.7

理解 Python 中的线程

原地址:http://blog.jobbole.com/52060/ 本文由 伯乐在线 - acmerfight 翻译自 Akshar Raaj.欢迎加入技术翻译小组.转载请参见文章末尾处的要求. 我们将会看到一些在Python中使用线程的实例和如何避免线程之间的竞争.你应当将下边的例子运行多次,以便可以注意到线程是不可预测的和线程每次运行出的不同结果.声明:从这里开始忘掉你听到过的关于GIL的东西,因为GIL不会影响到我想要展示的东西. 示例1 我们将要请求五个不同的url: 单线程 1 2

python中的特殊数据类型

一.python中的特殊数据类型 对于python,一切事物都是对象,对象基于类创建.像是"wangming",38,[11,12,22]均可以视为对象,并且是根据不同的类生成的对象. 参照:http://www.cnblogs.com/wupeiqi/articles/4911365.html 1.列表 如[12,12,23].['wan','fad','dfjap]等 列表具备的功能: class list(object): """ list() -&

python基础24 -----python中的各种锁

一.全局解释器锁(GIL) 1.什么是全局解释器锁 在同一个进程中只要有一个线程获取了全局解释器(cpu)的使用权限,那么其他的线程就必须等待该线程的全局解释器(cpu)使 用权消失后才能使用全局解释器(cpu),即时多个线程直接不会相互影响在同一个进程下也只有一个线程使用cpu,这样的机制称为全局 解释器锁(GIL). 2.全局解释器锁的好处 1.避免了大量的加锁解锁的好处 2.使数据更加安全,解决多线程间的数据完整性和状态同步 3.全局解释器的缺点 多核处理器退化成单核处理器,只能并发不能并

python中的多进程处理

转载于:http://blog.csdn.net/jj_liuxin/article/details/3564365 帮助文档见https://docs.python.org/2.7/library/multiprocessing.html 众所周知,python本身是单线程的,python中的线程处理是由python解释器分配时间片的:但在python 3.0中吸收了开源模块,开始支持系统原生的进程处理——multiprocessing. 注意:这个模块的某些函数需要操作系统的支持,例如,mu