import random
import queue as Queue
import _thread as Thread
a = Queue.Queue()
def af():
while True:
a.put(random.randint(0,1000))
def bf():
while True:
if (not a.empty()): print (a.get())
def main():
Thread.start_new_thread(af,())
Thread.start_new_thread(bf,())
return
if __name__ == "__main__":
main()
上記のコードは極端に高いCPU使用率で問題なく動作しますが、無駄なマルチプロセッシングを使用しようとしました。私無限ループとキューを持つ基本的なマルチプロセッシング
def main():
multiprocessing.Process(target=af).run()
multiprocessing.Process(target=bf).run()
と
def main():
manager = multiprocessing.Manager()
a = manager.Queue()
pool = multiprocessing.Pool()
pool.apply_async(af)
pool.apply_async(bf)
の両方に動作していないを試してみましたが、誰も私を助けてくださいことができますか?おかげで^^^
は、しかし、私は悪いことは何も、スレッド方式に対するCPU使用率の減少を参照していけない、答えを非常に多くのuをありがとう? – tomato
私はそれが期待されると思います。大部分が乱数を計算する 'while true'ループを持つことは、CPUを大量に消費することになります。いくつかの方法でそれを抑制することができます.1つは 'af'と' bf'の両方の関数に 'sleep'文を入れ(2秒間)してCPU使用量を期待通りに減らすかどうかを見ます。 – sal