我有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编写代码?
答案 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
模块。