用Python处理一些问题的时候,会发现运行的速度很慢,比如说读取多张图片数据,要比C++慢很多,但是如果可以使用多进程,那么速度上就会有提高。
本文部分内容来自于(https://www.cnblogs.com/kaituorensheng/p/4445418.html)
(在Windows上面使用多进程出现了一点问题,子进程里面的程序没有执行)在Linux系统之下,就没有出现这样的问题。
1、启动多进程:
import multiprocessing def worker(..): ... # 一个进程 p = multiprocessing.Process(target = worker,args=(函数参数,))
上面的worker是定义的函数,传入到args中的是函数的参数,注意最后加一个逗号是因为传入的tuple的数据类型。
2、将进程定义为类
class process_class(multiprocessing.Process): def __init__(self, ..): multiprocessing.Process.__init__(self) def run(self): ... p = process_class(..) p.start()
上面p调用start()的时候,自动调用run()。
3、daemon
如果设置了
p.daemon = True
那么主进程结束之后,子进程就会随之结束。
4、共享资源lock
见前面的博客,多个进程访问共享资源的时候,Lock可以用来避免访问的冲突。
5、Queue
Queue是队列,有两个关键的method: put和get。
put: 插入数据到队列中, put有两个可选的参数,blocked和timeout。如果blocked设置为True(默认值),并且timeout为正值,当Queue队列已经满的时候,会过timeout之后才会抛出Queue.Full异常。否则,则立即抛出Queue.Full异常。
get: 队列读取并且删除一个元素。同样也有两个可选参数,blocked和timeout,类似上面。