0%

python | 多进程的共享变量

多进程的共享变量。

多进程可以使用 multiprocess 提供的变量来进行通信。

看源码得知

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
def Barrier(parties: int,
action: Optional[Callable[..., Any]] = ...,
timeout: Optional[float] = ...) -> synchronize.Barrier: ...
def BoundedSemaphore(value: int = ...) -> synchronize.BoundedSemaphore: ...
def Condition(lock: Optional[_LockLike] = ...) -> synchronize.Condition: ...
def Event(lock: Optional[_LockLike] = ...) -> synchronize.Event: ...
def Lock() -> synchronize.Lock: ...
def RLock() -> synchronize.RLock: ...
def Semaphore(value: int = ...) -> synchronize.Semaphore: ...

def Pipe(duplex: bool = ...) -> Tuple[connection.Connection, connection.Connection]: ...

def Pool(processes: Optional[int] = ...,
initializer: Optional[Callable[..., Any]] = ...,
initargs: Iterable[Any] = ...,
maxtasksperchild: Optional[int] = ...) -> pool.Pool: ...
class Array
class Value():

其中 QueuePipe 可以参考下面的博文

关于其它变量的使用,其自行查找。

另外,multiprocess 里面的各种共享变量只能在多进程间使用,不能在进程池之间使用。

进程池之间共享变量是不能使用上文方式的,因为进程池内进程关系并非父子进程,想要共享,必须使用 Manager 模块来定义。

请我喝杯咖啡吧~