場景:
經常會遇到下述問題:很多io busy的應用采取多線程的方式來解決,但這時候會發現python命令行不響應ctrl-c 了,而對應的java代碼則沒有問題:
代碼如下:
public class Test {
public static void main(String[] args) throws Exception {
new Thread(new Runnable() {
public void run() {
long start = System.currentTimeMillis();
while (true) {
try {
Thread.sleep(1000);
} catch (Exception e) {
}
System.out.println(System.currentTimeMillis());
if (System.currentTimeMillis() - start > 1000 * 100) break;
}
}
}).start();
}
}
java Test
ctrl-c則會結束程序
而對應的python代碼:
代碼如下:
# -*- coding: utf-8 -*-
import time
import threading
start=time.time()
def foreverLoop():
start=time.time()
while 1:
time.sleep(1)
print time.time()
if time.time()-start>100:
break
thread_=threading.Thread(target=foreverLoop)
#thread_.setDaemon(True)
thread_.start()
python p.py
后ctrl-c則完全不起作用了。
不成熟的分析:
新聞熱點
疑難解答