読者です 読者をやめる 読者になる 読者になる

キューとスレッド

A〜Gの文字を10個づつ表示するという処理が、7スレッドで並行して実行されます。
スレッド数の上限を例えば4として、A〜Dの並行処理が終わってからE〜Gが処理されるようにするにはどのように記述すればよいのでしょうか?

[mixi]Python | 初心者質問トピック

Queueを使って、スレッドプールを使えば良いらしいので、書いてみました。

from __future__ import division, print_function, unicode_literals
__metaclass__ = type

from Queue import Queue
from threading import Thread

def main():
    q = Queue()
    def worker(q=q):
        while True:
            c = q.get()
            for i in xrange(10):
                print(c, end="")
            q.task_done() 
    
    for i in range(4): 
         t = Thread(target=worker)
         t.setDaemon(True)
         t.start() 
    
    for c in "ABCDEFG":
        q.put(c)
    q.join()
    
if "__main__" == __name__:
    main()
広告を非表示にする