python: subprocess.call 线程问题
大家好,关于这个“while True”循环的问题,处理似乎永远不会结束,即使我使用了q.task_done,这里到底出了什么问题呢?
fileQueue = Queue()
def submit(i, q):
global filespath
while True:
filename = q.get()
retVT = subprocess.call("python abc.py -f %s" % (filespath + filename), shell=True, stdout=open('/dev/null', 'w'), stderr=subprocess.STDOUT)
retTH = subprocess.call("python def.py -a %s" % (filename), shell= True, stdout=open('/dev/null', 'w'), stderr=subprocess.STDOUT)
q.task_done()
def main():
global fileQueue
num_threads = fileQueue.qsize() # 获取队列中任务的数量
for i in range(num_threads): # 根据任务数量创建线程
worker = Thread(target=submit, args=(i, fileQueue)) # 创建一个新线程,执行submit函数
worker.setDaemon(True) # 设置为守护线程,这样主程序结束时它也会结束
worker.start() # 启动线程
fileQueue.join() # 等待队列中的所有任务完成
print "Done" # 打印“完成”
if name == 'main':
main() # 如果这个文件是主程序,就运行main函数
谢谢
1 个回答
0
abc.py和def.py这两个文件的内容是什么?你确定你执行的命令会结束吗?试着把两个subprocess.call()的那行代码注释掉,然后看看程序是否按预期工作。如果这样突然能正常工作,那问题可能出在你在代码外部调用的脚本上。