Python顺序运行线程

标签 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()

进入命令行

1
1
1
1
1

在打印完所有 100 个之前,不会出现一个 2。

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

最佳答案

这一行

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

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

你想要的是“启动一个新线程并执行其中带有参数 1 的 f”,这转化为

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

关于Python顺序运行线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52479870/

相关文章:

python - 更改 django 中的日期格式

python - 删除 Pandas 后如何更新分层索引?

python - queue.get() 仅返回一项

python - 线程不工作

python - 如果两个键值相同,如何对字典列表中的元素求和

python - 流上的正则表达式而不是字符串?

python - 从 2 个法线创建旋转矩阵

python - 如何将参数传递给正在运行的Python线程

Python Tkinter While 线程

python - Python 中多处理的同步问题,双 for 循环