【发布时间】:2018-09-24 12:50:54
【问题描述】:
我正在尝试在 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 出现。
这是怎么来的?理论上 f(1) 和 f(2) 应该同时运行吧?
【问题讨论】:
-
您在创建线程时调用了函数。经典的欺骗
-
另请注意:
range(1, 100)将打印 99 次,而不是 100 次;第二个数字是它之前停止的极限。
标签: python python-multithreading