传递字典对象以充当线程,而不是其值

时间:2016-12-16 08:43:05

标签: python multithreading function dictionary

我有一个脚本,它将一个函数作为一个线程运行。该函数使用main中字典的内容,但不需要更改它。

例如

from threading import Thread

def a_func(self, dic):
    print(str(dic))

some_dic={
    1:"A",
    2:"B"
}

print(str(some_dic))

t = Thread(target=a_func, args=(some_dic))
t.start()

结果输出为:

{1: 'A', 2: 'B'}
2

我已经读过传递给线程函数的第一个参数本身 - 我误解了吗?

即使没有self的问题,该函数也不会打印实际的字典对象,而是打印这种情况下的密钥。

如何将字典对象传递给线程函数,从而产生输出:

{1: 'A', 2: 'B'}
{1: 'A', 2: 'B'}

1 个答案:

答案 0 :(得分:1)

args应该是函数的所有参数的元组,所以要传递字典,你需要一个字典的元组。

此外,Python要求您为元组添加额外的逗号,并使用一个元素将其与仅用括号括起表达式区分开来。

另外,为什么你在函数中使用self? 这段代码应该有效:

from threading import Thread

def a_func(dic):
    print dic

some_dic={
    1:"A",
    2:"B"
}

print(str(some_dic))

t = Thread(target=a_func, args=(some_dic,))
t.start()