小编Thi*_*mer的帖子

使用Process.Terminate()时如何解决队列损坏

我正在构建一个Python脚本/应用程序,它启动了多个所谓的Fetchers.他们反过来做某事并将数据返回队列.

我想确保Fetchers的运行时间不超过60秒(因为整个应用程序在一小时内运行多次).

阅读Python文档时,我注意到他们在使用Process.Terminate()时要小心,因为它可能会破坏Queue.

我目前的代码:

# Result Queue
resultQueue = Queue();

# Create Fetcher Instance
fetcher = fetcherClass()

# Create Fetcher Process List
fetcherProcesses = []

# Run Fetchers
for config in configList:
    # Create Process to encapsulate Fetcher
    log.debug("Creating Fetcher for Target: %s" % config['object_name'])
    fetcherProcess = Process(target=fetcher.Run, args=(config,resultQueue))

    log.debug("Starting Fetcher for Target: %s" % config['object_name'])
    fetcherProcess.start()
    fetcherProcesses.append((config, fetcherProcess))

# Wait for all Workers to complete
for config, fetcherProcess in fetcherProcesses:
    log.debug("Waiting for Thread to complete (%s)." % str(config['object_name']))
    fetcherProcess.join(DEFAULT_FETCHER_TIMEOUT) …
Run Code Online (Sandbox Code Playgroud)

python queue process multiprocessing

5
推荐指数
1
解决办法
639
查看次数

标签 统计

multiprocessing ×1

process ×1

python ×1

queue ×1