进程锁

作者: Zero兴 | 来源:发表于2018-07-09 17:37 被阅读0次

 在同一时间使用多个进程同时运行,可能导致反馈数据顺序是乱的,为保证得到理想的数据顺序,就需要添加一把锁以控制数据的顺序输出。

from multiprocessing import Manager,Pipe,Process,os, Lock

def t(lock,d,l):

    lock.acquire()  # 加锁

    try:

        d[os.getpid()] = os.getpid()

        l.append(os.getpid())

    finally:

        lock.release()  # 释放

if __name__ =='__main__':

    # parent_cnn, child_cnn = Pipe()  # 管道生成两个实例

    lock = Lock()

    with Manager() as manager:

        d = manager.dict()

        l = manager.list(range(10)) # 声明一个[0,1,2,3....,9]的列表

        p_list = []

        for i in range(5):

            p = Process(target=t,args=(lock, d,l))

            # p.daemon = True

            p.start()

            p_list.append(p)

        for j in p_list:

            j.join()

        print d # {11160: 11160, 11161: 11161, 11162: 11162, 11163: 11163, 11164: 11164}

        print l # [0, 1

# 进程池

from multiprocessing import Process, Pool, Lock

import os, time

def f(i):

    time.sleep(1)

    print('hello',os.getpid())

def Bar(*args):

    print('程序完成之后,主进程进行回调...',os.getpid())

if __name__ == '__main__':

    pool = Pool(5) # 创建进程池

    print(os.getpid())

    for i in range(10):

        # pool.apply(func=f, args=(i,))  # 串行执行

        pool.apply_async(func=f, args=(i,), callback=Bar)  

        # 并行执行 callback 为回调函数,指的是执行完func之后才会执行的方法函数

        # pool.apply_async(func=f, args=(i,))

    pool.close()

    pool.join()

    print('end')

参考:https://www.onexing.cn

相关文章

  • 进程学习三

    进程进阶 1.进程锁 这里的进程锁与线程锁、互斥量、读写锁和自旋锁不同,它是通过记录一个PID文件,避免两个进程同...

  • Python3.x:进程锁与进程池

    进程锁 上篇说了不需要加进程锁,但是这里还是要了解一下进程锁,因为在python2中,进程加锁还是很有必要的 注意...

  • 进程锁

    在同一时间使用多个进程同时运行,可能导致反馈数据顺序是乱的,为保证得到理想的数据顺序,就需要添加一把锁以控制数据的...

  • 进程锁

    spawn模式下的第一种方式 spawn模式的第二种方式 fork模式 fork模式不需要特殊处理

  • oracle杀掉锁表会话

    查看锁表进程SQL语句1: 查看锁表进程SQL语句2: 杀掉锁表进程:如有記錄則表示有lock,記錄下SID和se...

  • python之多线程与多进程入门

    python之多线程与多进程 关键词: GIL锁,IO繁忙,线程安全,线程同步,进程池,进程通信,队列 GIL锁;...

  • multiprocessing模块-多进程知识点

    多进程代码 方法 属性 多进程锁 多进程的信号量 这个跟锁的用法差不多,差别就是能够设置钥匙的数量,即进程的数量,...

  • 锁的分类

    就锁的使用场景可以分为进程锁和线程锁。很明显,一种用于线程、一种用于进程。 多核处理器下,会存在多个进程处于内核态...

  • 数据机房的几种“锁”

    此锁非彼锁,今天介绍几种数据锁。 1、文件锁 当多个进程可能会对同样的数据执行操作时,这些进程需要保证其它进...

  • APUE读书笔记-13守护进程(5)

    6、守护进程遵循的一些标准 Unix上面的守护进程,一般会遵循如下的通用标准: 如果守护进程使用锁文件,那么锁文件...

网友评论

      本文标题:进程锁

      本文链接:https://www.haomeiwen.com/subject/gwptpftx.html