This topic created in 3758 days ago, the information mentioned may be changed or developed.
程序用来并发删除文件,是一个 io 密集型的任务,
中间碰到一个奇怪的现象,程序中用到 logging 模块,因为是线程安全的,并每太在意,
第二天发现程序卡住了( stdout 重定向的文件,日志文件都没更新), strace 进程以后,程序继续执行,标准输出和日志都开始正常更新,不知道问题是出在线程调度还是哪,求大神指点
5 replies • 2016-02-22 19:48:12 +08:00
 |
|
2
ethego Feb 22, 2016
写入同一个文件造成的死锁?
|
 |
|
3
azkb Feb 22, 2016
@ ethego 还真像死锁,不过 ethego 是指 logging 到同一文件,还是 stdout 重定向导致的死锁呢
|
 |
|
4
ethego Feb 22, 2016
@ azkb 这个你自己最清楚啊,看有没有哪里是有可能多个线程同时挤占一个文件的
|
 |
|
5
azkb Feb 22, 2016
文件只有 3 个: 1. logging 日志文件:只有 logging 调用,线程安全,应该问题不大 2. stdout :线程中有调用 os.system ,标准输出重定向到文件 stdout 3. stderr :同上,标准错误
哦,知道了,可能是 os.system 调用的外部程序的标准输出也和我的程序都定向到了同一个文件,导致 stdout 文件冲突,那应该把外部程序的标准输出重定向 /dev/null 或其他文件就不会冲突了
|