python编程(multiprocessing库)

栏目: Python · 发布时间: 8年前

内容简介:python编程(multiprocessing库)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

由于平时写多进程的机会不多,所以对这方面也不太重视。因此,一直没有把多进程的代码掌握好。其实,从心底里,我知道多进程还是有很多优点的,其中稳定性就是很重要的一条。现在用 python 写多进程,发现用multiprocessing库写起来一点也不难。

1、创建多进程

t = multiprocessing.Process(target = run_process)
t.start()

2、等待进程结束

t.join()

3、创建pipe

(p1, p2) = multiprocessing.Pipe()
data = p1.read()
p2.send(data)

4、创建锁

多进程下面的锁多用来限制对某些文件的访问,用法如下,

l = multiprocessing.Lock()
l.acquire()
l.release()

5、创建信号量

信号量是进程同步的好方法,实际使用的机会也很多,用法如下,

a = multiprocessing.Semaphore(0)
a.acquire()
a.release()

6、信号处理

multiprocessing库是真正的多进程,用ps aux检测的时候可以发现确实有多个进程在运行。同样,发送给parent的信号也会发送给子进程,所以一般来说,信号函数都是公用的,

signal.signal(signal.SIGINT, sig_process)

7、完整范例

#!/usr/bin/python

import multiprocessing
import os
import time
import signal

g_exit = 0

def sig_process(sig, frame):
    global g_exit
    g_exit = 1

def send_process(p, l):
    data = 0
    while not g_exit:
        p.send(data)
        data += 1
        l.release()
        time.sleep(1)

    l.release()
    p.send(0)


def get_process(p, l):
    while not g_exit:
        l.acquire()
        print p.recv()


def main():

    signal.signal(signal.SIGINT, sig_process)
    l = multiprocessing.Semaphore(0)
    (p1, p2) = multiprocessing.Pipe()
    t1 = multiprocessing.Process(target = send_process, args=(p1,l,))
    t1.start()

    t2 = multiprocessing.Process(target = get_process, args=(p2,l,))
    t2.start()

    while not g_exit:
        time.sleep(3)

    t2.join()
    t1.join()


if __name__ == '__main__':
    main()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

区块链技术驱动金融

区块链技术驱动金融

阿尔文德·纳拉亚南、约什·贝努、爱德华·费尔顿、安德鲁·米勒、史蒂文·戈德费德 / 林华、王勇 / 中信出版社,中信出版集团 / 2016-8-25 / CNY 79.00

从数字货币及智能合约技术层面,解读了区块链技术在金融领域的运用。“如果你正在寻找一本在技术层面解释比特币是如何运作的,并且你有一定计算机科学和编程的基本知识,这本书应该很适合你。” 《区块链:技术驱动金融》回答了一系列关于比特币如何运用区块链技术运作的问题,并且着重讲述了各种技术功能,以及未来会形成的网络。比特币是如何运作的?它因何而与众不同?你的比特币安全吗?比特币用户如何匿名?区块链如何......一起来看看 《区块链技术驱动金融》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具