连续运行线程的Python

连续运行线程的Python,python,python-multithreading,Python,Python Multithreading,我正在试验用Python并行运行代码 我的用例如下:我有一个需要运行数千次的进程。但是由于它依赖于下载,我需要注意我在同一时间运行了多少次,我每分钟的请求数量是有限的。因此,我希望始终同时运行该函数10次,每次完成一次,我希望启动一个新进程 在做了一些快速阅读线程模块似乎是我要找的。然而,一些小实验似乎表明Python不会并行运行线程 当我运行以下代码时 import threading import time wait = 0.4 def f(x): for j in range(1,1

我正在试验用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()
我进入命令行

1
1
1
1
1
直到100个字母全部打印出来,才有一个字母2出现

这是怎么来的?理论上f1和f2应该同时运行,对吗?

这条线

threading.Thread(target = f(1)).start()
基本上说,启动一个新线程并在其中执行f1的结果

您需要的是启动一个新线程并使用其中的参数1执行f,该参数转换为

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

threading.Thread(target = f(1)).start()
基本上说,启动一个新线程并在其中执行f1的结果

您需要的是启动一个新线程并使用其中的参数1执行f,该参数转换为

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

在创建线程时调用函数。经典的dupeAlso注:Range100将打印99次,而不是100次;第二个数字是它在此之前停止的限制。您在创建线程时正在调用函数。经典的dupeAlso注:Range100将打印99次,而不是100次;第二个数字是它在此之前停止的限制。还要注意,f1返回None,这恰好是一个有效的目标。目标是run方法要调用的可调用对象。默认为“无”,表示不调用任何内容。-还请注意,f1返回None,这恰好是一个有效的目标。target是run方法要调用的可调用对象。默认为“无”,表示不调用任何内容。-重点矿山