use*_*318 13 python class multiprocessing
这是一个新手问题:
一个类是一个对象,所以我可以创建一个被调用的类pippo(),在这个add函数和参数内部,我不明白pippo当我分配时,里面的函数是从上到下执行x=pippo()还是我必须在x.dosomething()外面调用它们pippo.
使用Python的多处理包,最好定义一个大函数并使用target调用中的参数创建对象Process(),还是通过继承Process类来创建自己的进程类?
Vel*_*ker 31
我经常想知道为什么Python的多处理文档页面只显示"功能"方法(使用target参数).可能是因为简洁,简洁的代码片段最适合用于说明目的.对于适合一个函数的小任务,我可以看到这是首选方式,ala:
from multiprocessing import Process
def f():
print('hello')
p = Process(target=f)
p.start()
p.join()
Run Code Online (Sandbox Code Playgroud)
但是,当您需要更多的代码组织(对于复杂的任务)时,创建自己的类是可行的方法:
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()
Run Code Online (Sandbox Code Playgroud)
请记住,每个生成的进程都使用主进程的内存占用的副本进行初始化.并且构造函数代码(即内部的东西__init__())在主进程中run()执行- 只有内部代码在单独的进程中执行.
因此,如果进程(主进程或衍生进程)更改了其成员变量,则更改将不会反映在其他进程中.这,当然,是唯一真正的储存卡,在类型,如bool,string,list,等.但是,您可以导入"特殊"的数据,从结构multiprocessing,其将被透明进程间共享模块(请参阅进程间共享状态.)或者,您可以创建自己的IPC(进程间通信)渠道,如multiprocessing.Pipe和multiprocessing.Queue.
| 归档时间: |
|
| 查看次数: |
23573 次 |
| 最近记录: |