Python顺序运行线程

Daa*_*aan 1 python python-multithreading

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

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

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

当我运行以下代码时

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()
Run Code Online (Sandbox Code Playgroud)

我进入了命令行

1
1
1
1
1
Run Code Online (Sandbox Code Playgroud)

不会显示单个2,直到所有100个都打印出来.

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

M. *_*ler 6

这条线

threading.Thread(target = f(1)).start()
Run Code Online (Sandbox Code Playgroud)

基本上说"开始一个新线程并在其中执行f(1)的结果".

你想要的是"开始一个新的线程并在其中执行带有参数1的f",这转化为

threading.Thread(target = f, args=(1,)).start()
Run Code Online (Sandbox Code Playgroud)