1

私はこのようなことをしようとしています:

import threading
def func1(a,b):
    def func2():
        t=threading.Thread(target=func3)
        return t
    return func2

func2=func1(a,b)
func2()

スレッド関数のargsパラメーターを使用しないという制限があります(使用している言語はPythonであり、いくつかの制限された関数があります)。代わりに、パラメーターとしてaとbをfunc3に渡します。クロージャを使用してこれを行うにはどうすればよいですか?

4

2 に答える 2

5

ラムダを使用できます:

t=threading.Thread(target=lambda: func3(a,b))

との値はa、終了b後もクロージャに保持されfunc1ます。

ラムダの代わりに、名前付き関数を作成できます。

def thread_func():
    func3(a,b)
t = threading.Thread(target=thread_func)
于 2012-10-24T12:19:18.433 に答える
2

不在の場合、lambda私は調べるかもしれませんfunctools.partial。それが許可されていない場合は、おそらく次のことを行うことができます。

import threading
def func1(a,b):
    def func2():
        def func4():
            return func3(a,b)
        return threading.Thread(target=func4)
    return func2

func2=func1(a,b)
func2()
于 2012-10-24T12:37:50.523 に答える