如何使用Python在4个线程上执行3个函数?

时间:2012-11-06 22:42:09

标签: python multithreading python-multithreading

我有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编写代码?

2 个答案:

答案 0 :(得分:0)

我不太了解python,但为每个函数尝试thread.start_new_thread(F1, (N))

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


编辑:

结果thread在python 3中重命名为_thread

import _thread
_thread.start_new_thread(F1, (N,))

答案 1 :(得分:0)

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

有关

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