Python 使用管理器修改多进程之间的变量

Python 使用管理器修改多进程之间的变量,python,multiprocessing,python-multithreading,Python,Multiprocessing,Python Multithreading,试图使在多进程进程中完成的方法中设置的值在“主”进程完成后被其使用 它现在给了我 TypeError: 'str' object does not support item assignment DID WE? [''] 鉴于以下代码,这不是我想要的: def load_dat_site(d): global seek_site browser.execute_script("window.location = '"+seek_site+"';") print "SITE LOADED" d[

试图使在多进程进程中完成的方法中设置的值在“主”进程完成后被其使用

它现在给了我

TypeError: 'str' object does not support item assignment
DID WE? ['']
鉴于以下代码,这不是我想要的:

def load_dat_site(d):
global seek_site
browser.execute_script("window.location = '"+seek_site+"';")
print "SITE LOADED"
d[0] = 'YEAH!'


manager = Manager()
d = manager.list([''])
site_load_process = multiprocessing.Process(target=load_dat_site, args=(d))
site_load_process.start()
site_load_process.join(15)
print "DID WE?", d
示例脚本似乎能够设置列表的值,但却无法设置,这有什么原因吗?

From(重点添加):

args
是目标调用的参数tuple。”

将您的
多处理。过程
实例化更改为如下所示,所有操作都将按预期工作

site_load_process = multiprocessing.Process(target=load_dat_site, 
                                            args=(d,)) # the comma is essential!
这里有一个独立的工作示例:


请记住,构成元组的不是方括号,而是逗号

>>> not_a_tuple = (0)
>>> type(not_a_tuple)
<type 'int'>

>>> t = 0,
>>> type(t)
<type 'tuple'>
>>非元组=(0)
>>>类型(非元组)
>>>t=0,
>>>类型(t)

识字率高得惊人。非常感谢。