您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

使用Python的multiprocessing.Process类

使用Python的multiprocessing.Process类

我经常想知道为什么Python的有关多处理的doc页面显示功能性”方法(使用target参数)。可能是因为简洁的代码段最适合用于说明目的。对于适合一个功能的小任务,我可以看到这是首选的方式,ala:

from multiprocessing import Process

def f():
    print('hello')

p = Process(target=f)
p.start()
p.join()

但是,当您需要更大的代码组织(用于复杂的任务)时,创建自己的类是可行的方法

from multiprocessing import Process

class P(Process):
    def __init__(self):
        super(P, self).__init__()
    def run(self):
        print('hello')

p = P()
p.start()
p.join()

请记住,每个生成的进程都使用主进程的内存占用量副本进行初始化。而且构造函数代码(即内部的东西__init__())是在主进程中执行的- 只有内部的代码run()在单独的进程中执行。

因此,如果某个进程(主进程或生成的进程)更改了其成员变量,则该更改将不会反映在其他进程中。这,当然,是唯一真正的储存卡,在类型,如boolstringlist,等。但是,您可以导入“特殊”的数据结构,从multiprocessing其中将被透明的过程(见之间共享模块进程间共享状态。)或者,您可以创建自己的IPC(进程间通信)渠道,例如multiprocessing.Pipemultiprocessing.Queue

python 2022/1/1 18:50:20 有364人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶