进程锁和共享池

一、进程锁

from multiprocessing import Process,Lock

def lock_f(l,i):    l.acquire()    try:        print ("multip - %s" % i )    finally:        l.release()

if __name__=="__main__":    lock = Lock()    for num in range(10):        Process(target=lock_f,args = (lock,num)).start()二、进程池
from multiprocessing import Process,Pool,freeze_supportimport timeimport os

def Foo(i):    time.sleep(1)    print("in process!",os.getpid())    return i+100

def Bar(args):    print ("-->exec done!",args,os.getpid())

if __name__=="__main__":    pool = Pool(processes=2) #允许进程池同时放入2个进程;    print("主进程池:",os.getpid())    for i in range(10):        #pool.apply(func = Foo,args=(i,))#apply支持串行;        #pool.apply_async(func=Foo,args=(i,)) #apply_async支持并行;        pool.apply_async(func=Foo,args=(i,),callback=Bar)

print ("end!")    pool.close()    pool.join()#进程池中进程,执行完毕后,再关闭;如果注视掉该行,那么程序直接关闭.
时间: 2024-07-30 09:29:27

进程锁和共享池的相关文章

python第三十七天,GIL全局解释器锁*****,线程池与进程池 同步异步,阻塞与非阻塞,异步回调

GIL全局解释器锁 1.什么是GIL 官方解释:'''In CPython, the global interpreter lock, or GIL, is a mutex that prevents multiple native threads from executing Python bytecodes at once. This lock is necessary mainly because CPython’s memory management is not thread-safe

Python进程锁和进程池

进程锁 进程与进程之间是独立的,为何需要锁? 对于进程,屏幕的输出只有一个,此时就涉及到资源的竞争.在Linux的Python2.x中可能出现问题. 这仅仅是一种情况,多个进程之间虽然是独立的,但仅限于内存和运算,如果涉及到其它一些资源, 就可能存在竞争问题,在实际使用过程中要注意思考和防范错误. from multiprocessing import Process, Lock def func(lock, i):     lock.acquire()     print("hello,&qu

Oracle OCP之硬解析在共享池中获取内存锁的过程

转载请注明出处:http://blog.csdn.net/guoyjoe/article/details/38684819 1.获得library cache Latch (1)在父游标的名柄没有找到SQL语句的文本:select * from gyj_t1 where id=1; 2.释放library cache Latch 3.获得shared pool Latch     (1)搜索FreeList 空闲Chunk     (2)搜索LRU上可覆盖的chunk     (3)搜索R-Fr

python:多进程,多进程队列,多进程管道,Manager,进程锁,进程池

#!usr/bin/env python# -*- coding:utf-8 -*- __author__ = "Samson" import multiprocessingimport time def run(name): time.sleep(2) print("process start...%s" % name)if __name__ == "__main__": for i in range(10): p = multiprocess

进程锁和进程池

进程锁和线程锁的写法看起来差不多,进程锁是用来防止使用多进程的时候打印出现混乱. # coding=utf-8 from multiprocessing import Process, Lock def f(l, i): l.acquire() print u'进程', i l.release() if __name__ == '__main__': lock = Lock() for i in range(10): Process(target=f, args=(lock, i)).start

O-理解共享池

我们可以通过show sga命令查看共享池的整体组成部分: ....待截图.... 一.SGA内存结构 Oracle中SGA主要包括: 1.固定数据结构部分(FIXED Size) 2.数据块缓冲区(DATABASE BUFFER) 3.REDO LOG缓冲区(redo buffers) 4.共享池(在variable size中). 固定区域包含了所有其他共享内存结构和重要的数据结构的地址和指针.资源.锁等,可通过如下命令详细列出具体内容: select pool,name,bytes fro

crontab使用进程锁解决冲突

想到一个问题,如果在crontab里有个定时任务设置为一分钟执行一次,但是它执行的时间可能会超过一分钟,此时crontab一分钟后会再次运行该脚本吗?这样会不会出现冲突呢?网上找了下,说可以用Linux中的进程锁控制crontab执行的并发问题. 给一个shell脚本加锁,使用flock命令. 一般格式:flock [-sxun][-w #] fd#flock [-sxon][-w #] file [-c] command... 常用选项:-s, --shared :获得一个共享的锁.-x, -

一句话说清分布式锁,进程锁,线程锁

在分布式集群系统的开发中,线程锁往往并不能支持全部场景的使用,必须引入新的技术方案分布式锁. 线程锁:大家都不陌生,主要用来给方法.代码块加锁.当某个方法或者代码块使用锁时,那么在同一时刻至多仅有有一个线程在执行该段代码.当有多个线程访问同一对象的加锁方法/代码块时,同一时间只有一个线程在执行,其余线程必须要等待当前线程执行完之后才能执行该代码段.但是,其余线程是可以访问该对象中的非加锁代码块的. 进程锁:也是为了控制同一操作系统中多个进程访问一个共享资源,只是因为程序的独立性,各个进程是无法控

static变量的线程间共享,进程间不共享

JAVA中通常我们会使用static域变量来在内存中缓存数据或长驻内存数据,众所周知,static是类的所有实例所共享. 考虑一个问题,假如在多线程情况下,共享数据肯定会有危险的, 例如使用SimpleDateFormat工具的一个变量时,为方便作为util写为了static,后来 在几W条数据中会出现一个奇怪的日期,这就是在多线程下会出现问题导致的数据冲突, 一般这种能私有不共享的数据最好为一个实例一份拷贝,不要做为static若非要做,就对象同步锁,使之单线程. 现在考虑的问题是,在进程间,