当提到使用int时,为什么函数需要作为参数元组(最后一个参数为空以逗号结尾)

时间:2015-08-31 20:39:39

标签: python multiprocessing

我正在学习多处理模块。 Here是函数调用至少对我来说很奇怪的例子。传递参数以逗号结尾(似乎最后一个参数是空的或遗忘或者奇怪的东西),例如

#!/usr/bin/python

from multiprocessing import Pool

def f(x):
    return x*x

if __name__ == '__main__':
    pool = Pool(processes=4)              # start 4 worker processes

    result = pool.apply_async(f, (10,))    # evaluate "f(10)" asynchronously
    print result.get(timeout=1)           # prints "100" unless your computer is *very* slow

或者这个

#!/usr/bin/python

from multiprocessing import Pool

def f(x):
    return x*x

if __name__ == '__main__':
    pool = Pool(processes=4)              # start 4 worker processes

    result = pool.apply_async(f, [10,])    # evaluate "f(10)" asynchronously
    print result.get(timeout=1)           # prints "100" unless your computer is *very* slow  

或者,这是使用命名参数

进行调用的地方
#!/usr/bin/python

from multiprocessing import Process, Queue

def f(q):
    q.put([42, None, 'hello'])

if __name__ == '__main__':
    q = Queue()
    p = Process(target=f, args=(q,))
    p.start()
    print q.get()    # prints "[42, None, 'hello']"
    p.join()

还有一些例子,传递参数是以“经典”(arg1,arg2)的方式完成的,我尝试修改上面的例子并删除最后一个逗号,但我生成错误。首先,我认为那些错过的参数与Process类一起使用,而那些“经典”参数与Pool一起使用,但在提到的网站上有例外。 这个惯例是什么意思? (arg1,)(arg1)之间有什么区别?

修改  正如评论中提到的那样type((1,))返回元组,其中type((1))返回int。但是f(x)函数需要元组吗?

0 个答案:

没有答案