我有一个脚本,它将一个函数作为一个线程运行。该函数使用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'}
答案 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()