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つある場合、プログラムはCPUの75%を使用します。

私はこれを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

CPythonでは、スレッド化によって並列処理を実現することは困難です。これは、グローバルインタプリタロックと関係があります。

これを回避する1つの方法は、multiprocessingモジュールを使用することです。

于 2012-11-06T23:40:56.097 に答える
0

私はPythonについてあまり知りませんがthread.start_new_thread(F1, (N))、各関数を試してください。

メソッドで見つけたドキュメントを次に示します。


編集:

Python 3threadで名前が変更されたことが判明しました:_thread

import _thread
_thread.start_new_thread(F1, (N,))
于 2012-11-06T22:51:25.300 に答える