在我的代码中,我将文件写入硬盘。之后,我需要导入生成的文件,然后继续处理它。
for i in xrange(10):
filename=generateFile()
# takes some time, I wish to freeze the program here
# and continue once the file is ready in the system
file=importFile(filename)
processFile(file)
如果我一次性运行代码段,很可能file=importFile(filename)
会抱怨该文件不存在,因为生成需要一些时间。
我曾经手动运行filename=generateFile()
并在运行file=importFile(filename)
之前等待
现在我正在使用for
循环,我正在寻找一种自动方式。
答案 0 :(得分:2)
您可以使用time.sleep
我希望如果您以这种方式加载模块,则需要reload
而不是import
后的import
。< / p>
但是,除非文件非常大,为什么不生成字符串然后eval
或exec
呢?
注意,因为你的文件生成函数没有在一个线程中被调用,所以它应该是阻塞的,并且只会在它认为已经完成写入时返回 - 可能你可以通过确保文件来改进编写器以outfile.flush()
然后outfile.close()
结束,但在某些操作系统上,可能仍有文件实际可用的时间。
答案 1 :(得分:0)
for i in xrange(10):
(filename, is_finished)=generateFile()
while is_finished:
file=importFile(filename)
processFile(file)
continue;
我认为您应该使用标志来测试文件是否生成。