from threading import Thread
data_from_file=[]
def thread_read (file_name):
with open(file_name, 'r',encoding="utf-8") as f:
str1=f.read()
f.close
data_from_file.append(str1)
return
if __name__ == "__main__":
file_r="read_thread.txt"
new_th1=Thread (target=thread_read,args=(file_r,))
new_th1.start()
input()
str_r=str(data_from_file)
print('str_r:', str_r)
我喜欢学习 Python。在一次训练任务中,我遇到了我的脚本难以理解的行为。我已经挖掘了几个小时,调试指定了问题,但被进一步卡住了。请帮忙:
为什么脚本只有在我们引入人为延迟 - input() 时才能相对正确地工作?(需要什么而不是延迟或至少我没有研究过的东西?:-)
我通常选择正确的方法来通过外部变量从流中返回结果?(引入了一个要返回的列表,因为 StackOverflow,当被问及如何将流的结果传递给 main 时,建议(不是我)这种方法。)
更新:这个问题在下面得到了回答:“为什么即使工作正常,打印字符串时的最终结果也不是:'Test',而是 ['Test']?” 谢谢Enikeyshchik!
细节:
任务:以流的形式从文件中读取,将结果返回给 main。
read_thread 文件包含单词“Test”。
设置调试打印打印和调试输入:如果没有输入运行,那么调试打印的结果是不正确的:str_r: [] 如果有输入运行,那么更准确地说:str_r: ['Test']
例如,使用ThreadPoolExecutor和Future:
或纯流:
这种方法不好,因为它需要使用全局变量。它比第二个例子更好,但使用更高级的工具,如 Future 或 Queue 会更好。