我正在尝试在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)应该同时运行吗?
答案 0 :(得分:6)
此行
threading.Thread(target = f(1)).start()
基本上说“启动一个新线程并在其中执行f(1)的结果”。。
您想要的是“启动一个新线程并在其中使用参数1执行f” ,该变量翻译为
threading.Thread(target = f, args=(1,)).start()