我正在尝试运行以下代码,该代码是直接从文档中复制的:https://docs.python.org/dev/library/concurrent.futures.html#module-concurrent.futures:

import executor
import concurrent.futures
import time

def wait_on_b():
    time.sleep(5)
    print(b.result()) # b will never complete because it is waiting on a.
    return 5

def wait_on_a():
    time.sleep(5)
    print(a.result()) # a will never complete because it is waiting on b.
    return 6


executor = ThreadPoolExecutor(max_workers=2)
a = executor.submit(wait_on_b)
b = executor.submit(wait_on_a)

我得到以下输出:
Traceback (most recent call last):
  File "test1.py", line 16, in <module>
    executor = ThreadPoolExecutor(max_workers=2)
NameError: name 'ThreadPoolExecutor' is not defined

我以为我忘了导入一些东西,但是我不知道。

最佳答案

请使用from concurrent.futures import ThreadPoolExecutor而不是import concurrent.futures,或者将导入保持原样并使用executor = concurrent.futures.ThreadPoolExecutor(maxworkers=2)

还要注意,您复制的示例代码旨在死锁,因此一旦解决了导入问题,它将无法正常工作。

关于python - 未定义ThreadPoolExecutor [python3],我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25276925/

10-09 20:38