python多进程

用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,类似上面。

原文地址:https://www.cnblogs.com/yanxingang/p/10901061.html