python 进程交互:Queue

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

import time
import datetime
import multiprocessing
from multiprocessing import Process, Manager, Lock, Queue
from threading import Thread
import ctypes, os
import select

class Ethread(Thread):
    def __init__(self, dic, print1):
        super(Ethread, self).__init__()
        self.dict = dic
        self.print1 = print1

    def run(self):
        while True:
            if self.dict:
                self.print1()
                if len(self.dict) >= 10:
                    break

class EPool(Process):
    def __init__(self, queue):
        super(EPool, self).__init__()
        self.dict = {}
        self.queue = queue

    def emit(self, msg):
        self.dict[msg] = msg

    def print1(self):
        print("%s" %self.dict)

    def run(self):
        self.thread = Ethread(self.dict, self.print1)
        self.thread.start()

        while True:
            try:
                msg = self.queue.get()
                self.emit(msg)
            except Exception as e:
                print(e)


class EProcess(Process):
    def __init__(self, queue):
        super(EProcess, self).__init__()
        self.queue = queue

    def run(self):
        for i in range(10):
            self.queue.put(i)

def main():
    queue = multiprocessing.Queue()

    pool = EPool(queue)
    pool.start()

    process = EProcess(queue)
    process.start()

main()

结果:
{0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值