1

我有 3 个函数,并希望使用 Python 在新线程上执行每个函数

每个函数只是一个数学运算。

我需要在流程的每个核心中启动每个功能。在Java中它看起来像:

Thread threadF1 = new Thread(f1);
Thread threadF2 = new Thread(f2);
Thread threadF3 = new Thread (f3);

threadF1.start();
threadF2.start();
threadF3.start();

如果我有 4 个内核,我的程序会使用 75% 的 CPU。

我用 Python 写了这个:

 thread = Thread(target = F1, args=(N,))
 thread.start()

 thread2 = Thread(target = F2, args=(N,))
 thread2.start()

 thread3 = Thread(target = F3, args=(N,))
 thread3.start()

但它只使用了 25%。如何使用 3/4 核强制 Python 中的工作代码?

4

2 回答 2

0

我不太了解python,但请尝试thread.start_new_thread(F1, (N))您的每个功能。

这是我在该方法上找到的一些文档:thread.start_new_thread


编辑:

原来在python 3中thread被重命名:_thread

import _thread
_thread.start_new_thread(F1, (N,))
于 2012-11-06T22:51:25.300 回答
0

在 CPython 中,很难通过线程来实现并行。这与Global Interpreter Lock有关。

解决此问题的一种方法是使用该multiprocessing模块。

于 2012-11-06T23:40:56.097 回答