在python多进程中使用manager和Barrier

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在python多进程中使用manager和Barrier相关的知识,希望对你有一定的参考价值。

注意:Barrier是PYTHON3才有的功能,在2中无法测试。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import multiprocessing
from multiprocessing import Barrier, Lock, Process
from time import time
from datetime import datetime

def test_with_barrier(synchronizer, seializer):
    name = multiprocessing.current_process().name
    synchronizer.wait()
    now = time()
    with serializer:
        print("process %s -----> %s" % (name, datetime.fromtimestamp(now)))

def test_without_barrier():
    name = multiprocessing.current_process().name
    now = time()
    print("process %s -----> %s" % (name, datetime.fromtimestamp(now)))

def worker(dictionary, key, item):
    dictionary[key] = item
    print(key, item)

if __name__ == __main__:
    synchronizer = Barrier(2)
    serializer = Lock()
    Process(name=p1 - test_with_barrier, target=test_with_barrier, args=(synchronizer, serializer)).start()
    Process(name=p2 - test_with_barrier, target=test_with_barrier, args=(synchronizer, serializer)).start()
    Process(name=p3 - test_without_barrier, target=test_without_barrier).start()
    Process(name=p4 - test_without_barrier, target=test_without_barrier).start()

    mgr = multiprocessing.Manager()
    dictionary = mgr.dict()
    jobs = [multiprocessing.Process            (target=worker, args=(dictionary, i, i*2))
            for i in range(10)
            ]
    for j in jobs:
        j.start()
    for j in jobs:
        j.join()

技术分享

以上是关于在python多进程中使用manager和Barrier的主要内容,如果未能解决你的问题,请参考以下文章

python多进程

python 多进程共享全局变量之Manager()

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

day38——多进程Manager进程池

Python多进程,多线程和异步实例

Python多进程,多线程和异步实例