【发布时间】:2018-09-13 13:25:49
【问题描述】:
下面是我从https://tutorialedge.net/python/concurrency/python-threadpoolexecutor-tutorial/得到的示例代码
from concurrent.futures import ThreadPoolExecutor
import threading
import random
taskarr = []
def task(n,c):
print("Executing our Task = {} and {}".format(n,c))
print("Task Executed {}".format(threading.current_thread()))
def main():
executor = ThreadPoolExecutor(max_workers=3)
task1 = executor.submit(task(1,'A'))
task2 = executor.submit(task(2,'B'))
if __name__ == '__main__':
main()
在这里,如果 executor.submit 返回到简单变量 task1,它可以工作。但我的要求是将它返回到一个数组。所以当我这样做时, taskarr[0] = executor.submit(task(1,'A')) 它抛出错误,
TypeError: 'function' object does not support item assignment
【问题讨论】:
-
taskarr[0] = executor.submit(task(1,'A'))应该触发一个IndexError,如果你做了task[0] = executor.submit(task(1,'A')),描述的TypeError将被引发。为什么不用taskarr.append? -
这在这方面帮助了我:pymotw.com/3/concurrent.futures