python 多线程问题求教

2016-02-22 17:25:07 +08:00
 azkb
程序用来并发删除文件,是一个 io 密集型的任务,

中间碰到一个奇怪的现象,程序中用到 logging 模块,因为是线程安全的,并每太在意,

第二天发现程序卡住了( stdout 重定向的文件,日志文件都没更新), strace 进程以后,程序继续执行,标准输出和日志都开始正常更新,不知道问题是出在线程调度还是哪,求大神指点
2596 次点击
所在节点    Python
5 条回复
boyhailong
2016-02-22 17:54:10 +08:00
无码无真相
ethego
2016-02-22 17:58:48 +08:00
写入同一个文件造成的死锁?
azkb
2016-02-22 19:08:39 +08:00
@ethego 还真像死锁,不过 ethego 是指 logging 到同一文件,还是 stdout 重定向导致的死锁呢
ethego
2016-02-22 19:33:10 +08:00
@azkb 这个你自己最清楚啊,看有没有哪里是有可能多个线程同时挤占一个文件的
azkb
2016-02-22 19:48:12 +08:00
文件只有 3 个:
1. logging 日志文件:只有 logging 调用,线程安全,应该问题不大
2. stdout :线程中有调用 os.system ,标准输出重定向到文件 stdout
3. stderr :同上,标准错误

哦,知道了,可能是 os.system 调用的外部程序的标准输出也和我的程序都定向到了同一个文件,导致 stdout 文件冲突,那应该把外部程序的标准输出重定向 /dev/null 或其他文件就不会冲突了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/258282

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX