

threading.Thread()を使っていて、問題がでたので、質問させていただきます。  
次のシンプルな、配列をforループさせてprintするスクリプトがあります。  
worker()をそのまま実行すると、配列の0番目から順にprintされますが、  
Thread(target=worker)で実行すると逆順に出力されます。  
(ちなみに、配列をrange(5000)とかにすると、順番がぐちゃぐちゃになる場合もあります。(毎回確実ではない))

[code]

    from threading import Thread
    
    def worker():
        nums = [1,2,3,4,5,6,7,8,9,10,11]
        for n in nums:
            print n
    
    # これは、printの順番は、1=>11
    worker()
    
    
    # これだと、printの順番が11=>1になってしまう
    t = Thread(target=worker)
    t.start()
    
[/code]

何か設定に問題があるのでしょうか。  
Thread特有の仕様でしょうか?

環境はwindows10, Python2.7です。  
よろしくお願いいたします。


CC BY-SA 3.0
2017-09-12T11:31:10.657
37895
2022-09-01T15:09:00.867
24908
question
python
Threadを使うと、配列の順番が変わる?


logging.infoで出力すると、正しく順番に出力されました。

* * *

この投稿は @Tatsuya Nakamori
さんの[コメント](https://ja.stackoverflow.com/questions/37895/#comment38149_37895)などを元に編集し、[コミュニティWiki](https://ja.meta.stackoverflow.com/q/1583)として投稿しました。


CC BY-SA 4.0
2021-01-29T01:29:40.207
73666
2021-01-29T01:29:40.207
9820
37895
answer