码迷,mamicode.com
首页 > 编程语言 > 详细

在python多进程中使用manager和Barrier

时间:2016-12-01 12:03:40      阅读:369      评论:0      收藏:0      [点我收藏+]

标签:range   style   time()   name   color   tip   without   import   time   

注意: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

标签:range   style   time()   name   color   tip   without   import   time   

原文地址:http://www.cnblogs.com/aguncn/p/6121095.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!