python 进程 进程池 进程间通信

1.python 中创建进程的两种方式:

from multiprocessing import Process
import time
def test_():
    print ‘-----test-----‘
if __name__ == ‘__main__‘:
    p = Process(target=test_)
    p.start()
    while True:
        print ‘--main--‘

‘‘‘1.通过process 类创建一个进程对象,然后start即可开启进程, test
test_函数是进程实现的功能‘‘‘

 from multiprocessing import Process
 import time
 class MyNewProcess(Process):
     def run(self):
         print ‘------run-------‘
 if __name__ == ‘__main__‘:
     p = MyNewProcess()
     p.start()
     print ‘---main-----‘
 ‘‘‘2.通过类似继承process   子类中必须有run 方法 里边实现 进程功能
 创建对象之后 调用start‘‘‘

2.进程池

from multiprocessing import Pool
from time import sleep
import os

def func(num):
    for i in range(3):
        print ‘%s %s‘ %(os.getpid(),num) #
        sleep(2)

def main():
    pool = Pool(3)
    for i in range(3, 6):
        res = pool.apply_async(func, (i,))
    pool.close()
    pool.join()

if __name__ == ‘__main__‘:
    main()

3.进程间通信

‘‘‘python 进程间通信     Queue ‘‘‘

‘‘‘1.Queue使用方法
    1.Queue.qsize(): 返回当前队列包含的消息数量
    2.Queue.empty(): 如果队列为空 返回True 反之 False
    3.Queue.full():  如果队列满了返回True 反之 False
    4.Queue.get():   获取队列中一条消息 然后将其从队列中移除 可传参数 超市时长
    Queue.get_nowait(): 相当于 Queue.get(False) 取不到值 触发异常
    Queue.put(): 将一个值添加到数列 可传参数 超时时长
    Queue.put_nowait():相当于 Queue.get(False)  当队列满时 报错
‘‘‘

from multiprocessing import Process, Queue
import time

q = Queue()  # 创建队列
for i in range(10):
    q.put(i)

def test_a():
        try:
            while True:
                num = q.get_nowait()
                print ‘我是进程a 取出数字为:%s‘%num
                time.sleep(1)
        except Exception, e:
            print e

def test_b():
    try:
        while True:
            num = q.get_nowait()
            print ‘我是进程b 取出数字是:%s‘%num
            time.sleep(1)
    except Exception, e:
        print e

if __name__ == ‘__main__‘:
    p1 = Process(target=test_a)
    p2 = Process(target=test_b)
    p1.start()
    p2.start()

至此  简单得使用已经结束

原文地址:https://www.cnblogs.com/nanyu/p/11394739.html

时间: 2024-10-13 19:06:14

python 进程 进程池 进程间通信的相关文章

Python使用进程池管理进程和进程间通信

与线程池类似的是,如果程序需要启动多个进程,也可以使用进程池来管理进程.程序可以通过 multiprocessing 模块的 Pool() 函数创建进程池,进程池实际上是 multiprocessing.pool.Pool 类. 进程池具有如下常用方法: 1.apply(func[, args[, kwds]]):将 func 函数提交给进程池处理.其中 args 代表传给 func 的位置参数,kwds 代表传给 func 的关键字参数.该方法会被阻塞直到 func 函数执行完成. 2.app

Python 3 进程池与回调函数

Python 3 进程池与回调函数 一.进程池 在利用Python进行系统管理的时候,特别是同时操作多个文件目录,或者远程控制多台主机,并行操作可以节约大量的时间.多进程是实现并发的手段之一,需要注意的问题是: 很明显需要并发执行的任务通常要远大于核数 一个操作系统不可能无限开启进程,通常有几个核就开几个进程 进程开启过多,效率反而会下降(开启进程是需要占用系统资源的,而且开启多余核数目的进程也无法做到并行) 例如当被操作对象数目不大时,可以直接利用multiprocessing中的Proces

Python(十) 进程、线程、协程篇

本节内容 1.操作系统发展史    2.进程.与线程区别    3.Python GIL全局解释器锁    4.线程        1.语法        2.join        3.线程锁 Lock.RLock.信号量        4.将线程变为守护进程        5.Event事件        6.queue队列        7.生产者消费者模型        8.Queue队列        9.开发一个线程池    5.进程        1.语法        2.进程间

python的进程与线程

一.进程与线程的相关概念 1.什么是进程 进程是一个程序在一个数据集上的一次动态执行过程. 进程一般由程序,数据集,进程控制块三部分组成. 2.什么是线程 线程也叫轻量级进程,它是一个基本的CPU执行单元,也是程序执行过程中的最小单元,由线程ID.程序计数器.寄存器集合和堆栈共同组成.线程的引入减小了程序并发执行时的开销,提高了操作系统的并发性能.线程没有自己的系统资源. 3.线程与进程的关系 线程不能独立存在,一个线程肯定有一个父进程.进程也不能独立存在,它一定也包含一个进程.可以理解为进程是

Python之进程、线程、协程篇

本章内容: 线程(线程锁.threading.Event.queue 队列.生产者消费者模型.自定义线程池) 进程(数据共享.进程池) 协程 线程 Threading用于提供线程相关的操作.线程是应用程序中工作的最小单元,它被包含在进程之中,是进程中的实际运作单位.一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务. threading 模块建立在 _thread 模块之上.thread 模块以低级.原始的方式来处理和控制线程,而 threading

Python 实现进程锁

先说说线程 在多线程中,为了保证共享资源的正确性,我们常常会用到线程同步技术. 将一些敏感操作变成原子操作,保证同一时刻多个线程中只有一个线程在执行这个原子操作. 我最常用的是互斥锁,也称独占锁.其次还有读写锁,信号量,条件变量等. 除此之外,我们在进程间通信时会用到信号,向某一个进程发送信号,该进程中设置信号处理函数,然后当该进程收到信号时,执行某些操作. 其实在线程中,也可以接受信号,利用这种机制,我们也可以用来实现线程同步.更多信息见 blog.csdn.net/aspnet_lyc/ar

Python实例浅谈之五Python守护进程和脚本单例运行

一.简介 守护进程最重要的特性是后台运行:它必须与其运行前的环境隔离开来,这些环境包括未关闭的文件描述符.控制终端.会话和进程组.工作目录以及文件创建掩码等:它可以在系统启动时从启动脚本/etc/rc.d中启动,可以由inetd守护进程启动,也可以有作业规划进程crond启动,还可以由用户终端(通常是shell)执行. Python有时需要保证只运行一个脚本实例,以避免数据的冲突. 二.Python守护进程 1.函数实现 #!/usr/bin/env python #coding: utf-8

#python#守护进程的实现

找了整天,终于找到一个可以用的代码 #! /usr/bin/env python2.7 #encoding:utf-8 #@description:一个python守护进程的例子 #@tags:python,daemon import sys import os import time import atexit from signal import SIGTERM      class Daemon:   """   A generic daemon class.     

python 守护进程

daemon进程 守护进程 1.fork子进程,而后父进程退出,此时子进程会被init进程接管 2.修改子进程的工作目录,创建新进程组和新会话,修改umask 3.子进程再次fork一个进程,这个进程可以称为孙子进程,而后子进程退出 4.重定向孙子进程标准输入流,标准输出等 atexit程序退出 调用某个函数 kill  级别 python 守护进程,布布扣,bubuko.com

【Python】使用Supervisor来管理Python的进程

1.问题描述 需要一个python的服务程序在后台一直运行,不能让该进程被杀死,即使被杀死也要能及时自动重启.如:有一个python的程序:test.py ,通过命令:python test.py来运行程序,但是它会受命令行的中断而中断.所以我们需要一个方法来保证该程序一直在后台运行. 2.解决方法 以前经常用命令:nohup python test.py & 来保证其在后台运行不中断,但是这也不能保证一直运行. 下面介绍用supervisor来管理python的进程,保证其在后台一直运行不中断