Python按顺序运行线程

时间:2018-09-24 12:50:55

标签: python python-multithreading

我正在尝试在Python中并行运行代码。

我的用例如下:我有一个过程,需要运行数千次。但是由于它依赖于下载,因此我需要注意同时运行多少个(每分钟请求数量有限)。因此,我希望始终同时运行该功能10次,每次完成一次,我都想启动一个新进程。

快速阅读之后,似乎正在寻找线程模块。但是,一些小型实验似乎表明Python不会在paralell中运行线程。

当我运行以下代码时

import threading
import time

wait = 0.4

def f(x):
 for j in range(1,100):
    time.sleep(wait)
    print(x)


threading.Thread(target = f(1)).start()
threading.Thread(target = f(2)).start()

我进入命令行

1
1
1
1
1

直到打印出全部100个为止,直到出现一个单2。

这是怎么回事?理论上f(1)和f(2)应该同时运行吗?

1 个答案:

答案 0 :(得分:6)

此行

threading.Thread(target = f(1)).start()

基本上说“启动一个新线程并在其中执行f(1)的结果”。

您想要的是“启动一个新线程并在其中使用参数1执行f” ,该变量翻译为

threading.Thread(target = f, args=(1,)).start()