python - 如何使用 ThreadPoolExecutor 并发运行
问题描述
我已经使用 Threading 工作了一段时间,但我发现当我使用线程时我无法同时运行。这是一个例子:
import concurrent.futures
import time
import random
from typing import List
site_catalog: List[str] = ["Thrill", "Test"]
def parse_value(value: str) -> None:
while True:
print("Caught: ", value)
time.sleep(random.randint(3, 5))
with concurrent.futures.ThreadPoolExecutor(max_workers=5) as executor:
for get_values in site_catalog:
executor.submit(parse_value(value=get_values))
>>> Caught: Thrill
Caught: Thrill
Caught: Thrill
Caught: Thrill
Caught: Thrill
Caught: Thrill
Caught: Thrill
Caught: Thrill
Caught: Thrill
Caught: Thrill
Caught: Thrill
Caught: Thrill
Caught: Thrill
Caught: Thrill
我想知道如何同时运行 List 中的值site_catalog
?这意味着输出将类似于:
>>> Caught: Thrill
Caught: Test
Caught: Thrill
Caught: Test
Caught: Test
Caught: Thrill
Caught: Test
Caught: Thrill
Caught: Thrill
Caught: Test
Caught: Thrill
他们不依赖于彼此的执行
解决方案
只需将其替换为:
executor.submit(parse_value(value=get_values))
至:
executor.submit(parse_value, get_values)
推荐阅读
- typescript - 打字稿:尝试为 redux 商店构建自动完成功能
- r - 从工作流中导出汇总模型
- c# - .NET 反应式合并列表
- assembly - 在汇编中从 argv 读取整数
- python - 在 Python 中绘制时间堆叠的波形
- html - 如何使 HTML (CSS) 中的 GIF 可重复并位于除背景图片之外的所有其他元素之后
- java - 将 YAML 文件解析为 Java 类
- java - 过滤器列表包含多个对象java
- c# - Type name "OleDbDataAdapter" could not be found in the namespace "System.Data.OleDb"
- ios - 与 UIKit PKCanvasView 下方的 SwiftUI 视图交互