首页 > 解决方案 > 不能将 namedtuple 与 concurrent.futures 一起使用?

问题描述

以下代码运行良好:

import itertools
import concurrent.futures

test_tuple = (1, "test")

iterations = range(1, 100)


def print_func(print_int, test_tuple):
    print(print_int, test_tuple)


def parallel_func():
    with concurrent.futures.ProcessPoolExecutor() as executor:
        executor.map(print_func, iterations, itertools.repeat(test_tuple))


if __name__ == "__main__":
    parallel_func()

但是,如果我使用namedtuple

import itertools
import concurrent.futures
from collections import namedtuple

TestNamedTuple = namedtuple("test", "id, name")
test_tuple = TestNamedTuple(1, "test")

iterations = range(1, 100)


def print_func(print_int, test_tuple):
    print(print_int, test_tuple.id, test_tuple.name)


def parallel_func():
    with concurrent.futures.ProcessPoolExecutor() as executor:
        executor.map(print_func, iterations, itertools.repeat(test_tuple))


if __name__ == "__main__":
    parallel_func()

终端锁定,看不到任何错误消息。有任何想法吗?

标签: python

解决方案


推荐阅读