import threading
def create_the_file(completion_event):
# Do stuff to create the file
def Main():
worker = threading.Thread(target=create_the_file)
worker.start()
# We will stop here until the "create_the_file" function finishes
worker.join()
# Do stuff with the file
进行非阻塞等待的一种方法是使用threading.Event:
这可以是来自另一个线程的
set()
,表示某个任务已经完成。但是如果在另一个线程中执行操作,则可以完全避免超时和事件,而只需join
另一个线程:如果您想要一个使用事件进行更细粒度控制的示例,我可以向您展示。。。
如果您的平台不提供线程模块,则线程方法将不起作用。例如,如果尝试替换伪线程模块,
dummy_event.wait()
将立即返回。不确定join()
方法。如果您正在等待其他进程完成,那么最好使用subprocess模块从自己的脚本中管理它们(然后,例如,使用^{} 方法确保在执行进一步的工作之前完成该进程)。
如果您不能从脚本管理子流程,但您知道PID,则可以使用^{} 函数。注意
OSError
如果使用此函数时进程已经完成。。。如果你想用跨平台的方式监视一个目录,让它收到新文件的通知,我建议使用GIO FileMonitorfrom PyGTK/PyGObject。可以使用GIO.File的monitor_directory方法在目录上获取监视器。
目录监视的快速示例代码:
相关问题 更多 >
编程相关推荐