如何写入父词典?

时间:2012-08-22 04:30:20

标签: python

如何写入父母的字典?我已经给了一些要检索的孩子的网址列表,然后需要写入父母的字典:

from multiprocessing import Pool
import random

parent_dict={}
urls = ['www.yahoo.com','www.google.com','www.microsoft.com','www.apple.com','www.cisco.com']

def workit(url):
    # retrieve the urls, process some stuff and then add that info to parent_dict
    key = random.randrange(1,10) # pretend that this is the variable that we want in parent_dict
    value = random.randrange(11,20)
    parent_dict[key] = value

pool = Pool(processes = 5)
pool.map(workit,urls)


print parent_dict # returns {}}

1 个答案:

答案 0 :(得分:1)

以下代码或多或少是你的,适用于处理传递python多处理文档中提到的manager.dict

from multiprocessing import Pool
from multiprocessing import Manager
import random

manager = Manager()
dproxy = manager.dict()

urls = ['www.yahoo.com','www.google.com','www.microsoft.com','www.apple.com','www.cisco.com']



def f(url):
    shared_dict = dproxy[0]
    key = random.randrange(1,10)
    value = random.randrange(11,20)
    shared_dict[key] = value
    dproxy[0] = shared_dict

if __name__ == '__main__':
    dproxy[0] = {}
    pool = Pool(processes=5)

    pool.map(f, urls)
    print dproxy[0]

  1. 这并不总是创建一个长度相同的字典。想一想你现在想的是什么(一些键被覆盖),我将字典改为列表,将shared_dict [key] =值改为shared_list.append((键,值))。在上进行覆盖但是该程序实际上也在编写可变数量的对。有时它是三个,有时两个,有时四个。我已在此处添加了代码以供您进行修改但我实际上并不会使用我发布的代码来执行任何操作
  2. idle开始运行时表现不佳。您将要使用python .py从命令行运行它。
  3. 我是否提到你不应该使用这些代码而不是测试来说"呵呵,那确实工作得很差,不是吗?"如果你可以找到解决问题的方法,那么对你有更多的权力,但我必须想象有一个更好的方法来设置它,完全回避这个问题。
  4. 无论你决定什么,祝你好运。不要使用我的代码。它运行并且不会给你提供恶意软件,但是关于所有它有利于它。