非阻塞方法作为与队列分开的线程的示例(Python)

时间:2019-02-17 23:03:11

标签: python-3.x queue python-multithreading nonblocking

我试图了解如何在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对我来说太复杂了,以致于我无法在这个简单的示例中适应和实现队列和线程。

很抱歉,这个问题太简单了,但是我非常需要阅读实现我的示例的代码,以方便我对该主题的理解。

0 个答案:

没有答案