强化学习技巧三:Python多进程
2023-02-18 16:37:19 时间
1.Python多进程模块
Python中的多进程是通过multiprocessing包来实现的,和多线程的threading.Thread差不多,它可以利用multiprocessing.Process对象来创建一个进程对象。这个进程对象的方法和线程对象的方法差不多也有start(), run(), join()等方法,其中有一个方法不同Thread线程对象中的守护线程方法是setDeamon,而Process进程对象的守护进程是通过设置daemon属性来完成的。
2.Python多进程实现方法一
from multiprocessing import Process
def fun1(name):
print('测试%s多进程' %name)
if __name__ == '__main__':
process_list = []
for i in range(5): #开启5个子进程执行fun1函数
p = Process(target=fun1,args=('Python',)) #实例化进程对象
p.start()
process_list.append(p)
for i in process_list:
p.join()
print('结束测试')
上面的代码开启了5个子进程去执行函数,我们可以观察结果,是同时打印的,这里实现了真正的并行操作,就是多个CPU同时执行任务。我们知道进程是python中最小的资源分配单元,也就是进程中间的数据,内存是不共享的,每启动一个进程,都要独立分配资源和拷贝访问的数据,所以进程的启动和销毁的代价是比较大了,所以在实际中使用多进程,要根据服务器的配置来设定。
报错:
TypeError: main() takes 0 positional arguments but 1 was given
def main(self):
括号里加上self就好了
3.Python多进程实现方法二
还记得python多线程的第二种实现方法吗?是通过类继承的方法来实现的,python多进程的第二种实现方式也是一样的
from multiprocessing import Process
class MyProcess(Process): #继承Process类
def __init__(self,name):
super(MyProcess,self).__init__()
self.name = name
def run(self):
print('测试%s多进程' % self.name)
if __name__ == '__main__':
process_list = []
for i in range(5): #开启5个子进程执行fun1函数
p = MyProcess('Python') #实例化进程对象
p.start()
process_list.append(p)
for i in process_list:
p.join()
print('结束测试')
相关文章
- Python从0到1丨细说图像增强及运算
- Python图像处理丨详解图像去雾处理方法
- 盘点Python 中字符串的常用操作
- 从0到1学Python丨图像平滑方法的两种非线性滤波:中值滤波、双边滤波
- 跟我学Python图像处理丨带你入门OpenGL
- 跟我学Python图像处理丨图像分类原理与案例
- Python 中 Pickle 库的使用详解
- Python: PyQt5在Pycharm中的配置
- Python: 按位或运算符(Bitwise OR)
- 不知道"鸭子类型"就当没学过python
- 盘一盘 Python 特别篇 23 - 爱因斯坦求和 einsum
- Python中的一个神秘文件:__init__.py 使用讲解
- 孤陋寡闻了,Python中类竟可以像列表一样操作
- Python表白C#?文末有彩蛋!
- (数据科学学习手札147)Python GIS利器shapely全新2.0版本一览
- Python 大数据量文本文件高效解析方案代码实现
- Python3.11正式版,它来了!
- 入门Python,看完这篇就行了!
- Python操作Excel表格
- Python实现XMind测试用例快速转Excel用例