簡體   English   中英

奇怪的Python線程行為

[英]Strange Python thread behavior

編輯 :實際上發生了什么是我在程序員的記事本中運行它並等待程序完成之前捕獲stdout輸出並將其打印到控制台,然后我從mingw運行它按預期工作。 這種行為是顯而易見的,我只是沒有意識到我在程序員的記事本中運行程序而不是像往常一樣運行shell。 我的錯。


我正在玩Python線程,但遇到了這個奇怪的問題,如果我在回調函數中有一個print語句和1秒睡眠語句,它就不會在睡眠時間總和消失之前進行打印。

這是導致此行為的代碼:

import threading
import time

def callback():
    for i in range(3):
        print "Hello, World!";
        time.sleep(1)

myThread = threading.Thread (
    target = callback, 
    args = []
)

myThread.start()

這就是我希望它表現的方式:

public class Demo
{    
    public static void main(String[] args)
    {
        (new Thread(() -> {
            for (int i = 0; i < 3; ++i) {
                System.out.println("Hello, World!");
                try {
                    Thread.sleep(1000);
                } catch(Exception e){
                    // rethrow as an unchecked exception but do not silence it.
                    throw (RuntimeException)e; 
                }
            }
        })).start();
    }
}

是什么導致Python以這種方式運行,我怎樣才能讓它按照我期望的方式運行?

根據您的評論,我感覺您的問題是由於系統沒有刷新標准輸出。 要修復它,請嘗試以下方法:

import sys

然后就在你的打印功能之后:

sys.stdout.flush()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM