- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
fdict= {0: fun1(), 1: fun2()}
# approach 1 : working fine, printing string
print fdict[random.randint(0,1)]
# approach 2 calling
thread.start_new_thread(fdict[random.randint(0,1)],())
#I also tried following approach
fdict= {0: fun1, 1: fun2}
thread.start_new_thread(fdict[random.randint(0,1)](),())
fun1 和 fun2 返回字符串。我可以使用方法 1 调用这些函数,但无法使用方法 2 调用这些函数。出现如下错误。但方法 1 已经证明它们是可调用的。
thread.start_new_thread(fdict[random.randint(0,1)],())
TypeError: first arg must be callable
最佳答案
fdict
的值不是函数;而是函数。它们分别是从 func1()
和 func2()
返回的值。
>>> fdict = {0: fun1, 1: fun2}
>>> thread.start_new_thread(fdict[random.randint(0,1)], ())
thread
是一个非常低级的库,无法连接线程,因此当主程序在任何线程完成执行其任务之前完成时,您可能会收到错误。
您应该使用threading.Thread
类来防止发生此类问题:
>>> from threading import Thread
>>> fdict = {0: fun1, 1: fun2}
>>> t = Thread(target=fdict[random.randint(0,1)], args=())
>>> t.deamon = True
>>> t.start()
>>> t.join() # main program will wait for thread to finish its task.
您可以看到threading文档以获取更多信息。
希望这有帮助。
关于python - 通过字典将函数传递给 thread.start_new_thread,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31529481/
当我单独运行下面的函数时,它会在 3 秒后退出,但是当我在线程中调用它时,它永远不会退出。请提出这段代码中的错误。 def display(val1, val2): root = Tk()
fdict= {0: fun1(), 1: fun2()} # approach 1 : working fine, printing string print fdict[random.randi
使用线程库时,有没有办法加入由 start_new_threads 创建的所有线程? 例如: try: import thread except ImportError: imp
我在 https://code.google.com/p/pyloadtools/wiki/CodeTutorialMultiThreading 找到了这个简单的代码 import _thread d
尝试在 Python 中使用 thread 时,使用以下代码 import select, sys, time, thread TIMEOUT = 30 def listenthread(server
当我使用旧的 Python thread API 时一切正常: thread.start_new_thread(main_func, args, kwargs) 但如果我尝试使用新的 threadin
python中的thread.start_new_thread和threading.Thread.start有什么区别? 我注意到,当调用 start_new_thread 时,新线程会在调用线程终止
我正在学习有关简单线程的教程。他们给出了这个例子,当我尝试使用它时,我从解释器那里得到了无法理解的错误。你能告诉我为什么这不起作用吗?我在 WinXP SP3 w/Python 2.6 current
我是一名优秀的程序员,十分优秀!