我试图了解如何在Python中按需生成使用队列的非阻塞线程。对于像我这样的菜鸟来说,这个主题相当复杂,我需要一个简单的例子来帮助我学习。
示例:
说我有一个main script
,它连续创建一个新目录,并在该目录内的文件中写入一些图像。然后,如何作为另一个非阻塞线程(other_script.py
)中的方法进行调用,以通过提供其名称来对这些目录中的每一个进行一些工作?为简单起见,该路径是固定的,因为当前的工作目录和目录名称均基于简单的时间戳生成。
下面是此示例的代码:
# main script
import os
import cv2
import time
from other_script import *
if __name__ == "__main__":
while True:
if some_event_triggered:
directory = "." + time.strftime("\\%Y-%m-%dT%H%M%S%z")
if not os.path.isdir(directory):
os.mkdir(directory)
# assuming images are given
for num, img in enumerate(images):
name_of_file = directory + "\\img_num" + str(num) + ".jpg"
cv2.imwrite(name_of_file, img)
# call do_work for this directory
# but continue 'listening' for new event triggers
do_work(timestamp)
# other_script.py
import os
def do_work(timestamp):
directory = os.path.join(os.getcwd(), + timestamp)
# do some work on that directory
我考虑过使用queue.Queue
来保存所有时间戳,并为每个时间戳调用do_work
函数作为后台进程线程。但是阅读这样的示例https://stackoverflow.com/a/16207592对我来说太复杂了,以致于我无法在这个简单的示例中适应和实现队列和线程。
很抱歉,这个问题太简单了,但是我非常需要阅读实现我的示例的代码,以方便我对该主题的理解。