gpt4 book ai didi

python - Python 中进程如何在彼此之间共享列表?

转载 作者:行者123 更新时间:2023-12-01 06:03:56 25 4
gpt4 key购买 nike

请好心地告诉我如何在进程之间共享列表或数组,以便它们可以访问/追加/删除其中的数据?我需要使用管理器吗?例如,我有使用多处理 ping 多个主机的代码:

#!/usr/bin/env python

from multiprocessing import Pool
import os

def ping(ip):
report = ("No response","Partial Response","Alive")
pingaling = os.popen("ping -q -c2 "+str(ip),"r")
while 1:
line = pingaling.readline()
try:
result = line[line.find(','):].split()[1]
output = report[int(result[0])]
except:
pass
if not line: break
print "Testing %s : %s!" % (ip, output)

if __name__ == '__main__':
pool = Pool(processes=3)
host = ['81.24.212.'+str(x) for x in range(10)]
pool.map(ping, host, 1)
pool.close()
pool.join()

但是输出未排序,但是我想将输出添加到数组并对其进行排序:

Testing 81.24.212.1 : Alive!
Testing 81.24.212.2 : Alive!
Testing 81.24.212.6 : Alive!
Testing 81.24.212.0 : No response!
Testing 81.24.212.5 : No response!
Testing 81.24.212.3 : No response!
Testing 81.24.212.4 : No response!
Testing 81.24.212.9 : No response!
Testing 81.24.212.7 : No response!
Testing 81.24.212.8 : No response!

最佳答案

您要查找的数据结构是 multiprocessing.Queue 。您可以将队列中的值弹出到列表中,直到获得与进程一样多的值,然后对它们进行排序和打印。然而,对于您的特定应用,Dan D 的 pool.map答案有更好的方法。

关于python - Python 中进程如何在彼此之间共享列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9005117/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com