在Python中是否可以将Thread分配给一个func,反之亦然?

时间:2019-06-15 11:34:44

标签: python multithreading python-2.7

我正在尝试学习abbout线程,特别是Python 我已经看到线程被生成为单/多

并且像它们只绑定到一个函数 它是如何工作的? 我可以让一个线程执行多项功能吗 或(显然是)一个功能有多个线程?

也可以说我在脚本中定义了多个函数 而且我想为每个线程分配一个线程,我是否必须遍历这段代码的第一部分 还是有另一种方法?

#example of single thread spawn
t = threading.Thread(target=somefunc,name="somename",args(arg1,arg1)


#example of multithread spwaning
for x in range(10)
     t = threading.Thread(target=somefunc,name="somename",args(arg1,arg1)
     t.start()





1 个答案:

答案 0 :(得分:0)

该线程将执行创建target时指定为Thread的任何内容。因此,如果您想产生执行完全不同的事物的多个线程,则可以使用

t1 = threading.Thread(target=do_first_thing, args=(arg,))
t2 = threading.Thread(target=do_second_thing, args=(arg1, arg2))
t1.start()
t2.start()

如果您希望多个线程执行相同的操作,则可以例如

threads = []
for x in range(5):
  t = threading.Thread(target=do_thing)
  threads.append(t)
  t.start()

或者如果您希望多个线程执行相同的操作,只是使用不同的参数

threads = []
for name in ("stackoverflow", "Faboor", "sadbot"):
  t = threading.Thread(target=say_hello_to, args=(name,))
  threads.append(t)
  t.start()

但是,最好使用multiprocessing库中的Pool,这样就不必管理自己的线程生命周期。