C# 相当于 Python 的 ThreadPool

Posted

技术标签:

【中文标题】C# 相当于 Python 的 ThreadPool【英文标题】:C# equivalent of Python's ThreadPool 【发布时间】:2020-09-28 15:21:24 【问题描述】:

我想问一下 Python 的 Threadpool 函数是否有任何替代方法。 我是 C# 新手。我有一个将字符串作为输入的函数,并且我有一个输入列表。我想要的是在多个线程(最多 12 个)中执行该函数,以便向每个线程传递来自列表的一个字符串输入,如果列表的大小大于线程数,则它等待任何一个线程完成其执行,然后在线程中使用下一个输入再次启动函数。希望这个问题对大家有意义。

我已经在 Python 中完成了这个:

def myfunc(input):
 print(input)

if__name__ == "__main__":
 inputs = [1,12,2,3,4,5,6,7,8,9,1,0,1,2,3,4,5,6,4,8,97,7]
 ThreadPool(12).map(myfunc, inputs)

【问题讨论】:

.NET 中有一个ThreadPool 类,只有静态成员(不可创建)。阅读其SetMinThreads 方法的文档特别有趣。 【参考方案1】:
static void Main()

    var inputs = new[]  1, 12, 2, 3, 4, 5, 6, 7, 8, 9, 1, 0, 1, 2, 3, 4, 5, 6, 4, 8, 97, 7 ;
    Parallel.ForEach(inputs, new ParallelOptions  MaxDegreeOfParallelism = 12 , MyFunc);

static void MyFunc(int value)  /*...*/ 

【讨论】:

以上是关于C# 相当于 Python 的 ThreadPool的主要内容,如果未能解决你的问题,请参考以下文章

Python初识

C#:相当于 C# 中的 HTML5 Canvas

`python`被`C# `调用的方法

C#相当于C联合[重复]

相当于 C# 中的 C 结构

C# 相当于 Java 的 Exception.printStackTrace()?