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)应该同时运行吗?
这条线
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)
| 归档时间: |
|
| 查看次数: |
525 次 |
| 最近记录: |