This topic created in 2442 days ago, the information mentioned may be changed or developed.
pool = Pool(processes=3)
pool.apply_async(self.run, (i,))
比如并发三个进程,在 run 方法里 os.getpid(),可是获得的进程 id 是三个独立的,我该如何将这个三个进程 id 放在一起(一个全局 list 里)?
12 replies • 2019-09-09 17:00:19 +08:00
 |
|
1
www5070504 Sep 9, 2019
记得多进程库里边提供了一个代理的方法来实现全局 但是性能不咋地.. 要不然试试放缓存里边啊
|
 |
|
3
lolizeppelin Sep 9, 2019
请把基础打一下 linux 进程间通信,父子进程
回头再来看 multiprocessing 源码
|
 |
|
5
Vegetable Sep 9, 2019
```python import multiprocessing import os import time from multiprocessing import Manager
m = Manager() lock = multiprocessing.Lock() pids = m.list()
def show(): print("当前 pid:{}".format(pids))
def dosth(): lock.acquire() pid = os.getpid() pids.append(pid) lock.release() show() time.sleep(1)
pool = multiprocessing.Pool(5)
for i in range(10): pool.apply_async(dosth) pool.close() pool.join()
``` 将就一下
|
 |
|
6
Cooky Sep 9, 2019 via Android
mmap 共享映射?
|
 |
|
10
conn4575 Sep 9, 2019 via Android
Queue+1
|
 |
|
11
Leigg Sep 9, 2019 via Android
这个应该想到多进程间的几种通信方式: 队列,共享内存,管道
|
 |
|
12
reus Sep 9, 2019
多进程内存空间是隔离的,所以要么用进程间通讯,要么在主进程 fork/clone 时记录。
|