Python 从其他线程打印写入文件

Python 从其他线程打印写入文件,python,multithreading,python-3.x,thread-safety,Python,Multithreading,Python 3.x,Thread Safety,我编写了以下测试样本: def initialize(): data_handler.main() print("Initialization Complete") def test(): time.sleep(5) print('testing') if __name__ == '__main__': threading.Thread(target=initialize).start() threading.Thread(target=tes

我编写了以下测试样本:

def initialize():
    data_handler.main()
    print("Initialization Complete")

def test():
    time.sleep(5)
    print('testing')

if __name__ == '__main__':
    threading.Thread(target=initialize).start()
    threading.Thread(target=test).start() 
数据处理器模块读取一些csv文件,修改它们并创建一些统计信息。但是,程序没有将“测试”打印到控制台,而是以某种方式将“测试”行添加到数据处理模块正在修改的一个文件中。我对它进行了多次测试,每次都会发生,尽管每次都是针对不同的文件


我试图弄清楚标准输出是如何重定向到文件的,以及原因。

您是否尝试过线程化.Lock和打印('testing',file=sys.stdout')线索可能在数据处理程序中。该模块可能正在劫持标准输出。使用print('testing',file=sys.stdout)无法修复它。把这句话锁起来似乎确实解决了问题,但我仍然不知道为什么会发生这种情况。这可能是由于使用fileinput.input的数据\u处理程序模块造成的吗?您是否尝试过将threading.Lock与print一起使用(“testing”,file=sys.stdout)?线索可能在数据\u处理程序中。该模块可能正在劫持标准输出。使用print('testing',file=sys.stdout)无法修复它。把这句话锁起来似乎确实解决了问题,但我仍然不知道为什么会发生这种情况。这可能是由于使用fileinput.input的数据处理程序模块造成的吗?