内容简介: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()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 编程范式 —— 函数式编程入门
- 【go网络编程】-HTTP编程
- 【go网络编程】-Socket编程
- c++并发编程—分布式编程
- Scala面向对象编程之Trait高级编程技术实践-JVM生态编程语言实战
- 函数式编程之数组的函数式编程
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Structure and Interpretation of Computer Programs - 2nd Edition
Harold Abelson、Gerald Jay Sussman / The MIT Press / 1996-7-25 / USD 145.56
Structure and Interpretation of Computer Programs has had a dramatic impact on computer science curricula over the past decade. This long-awaited revision contains changes throughout the text. Ther......一起来看看 《Structure and Interpretation of Computer Programs - 2nd Edition 》 这本书的介绍吧!