怎么让python一直执行_怎么才能让Python多进程不间断执行任务
任務(wù)列表儲(chǔ)存在mongoDB中 大概三百萬條
每個(gè)任務(wù)執(zhí)行結(jié)束會(huì)標(biāo)記上
現(xiàn)在有個(gè)問題
每次腳本開始時(shí)讀取100任務(wù)
用python多進(jìn)程執(zhí)行任務(wù)時(shí) 必須等待所有進(jìn)程執(zhí)行結(jié)束才能重新讀取下一個(gè)100條
有沒有什么辦法讓結(jié)束的進(jìn)程不間斷去領(lǐng)取新的任務(wù)?
創(chuàng)建進(jìn)程的片段
#!/usr/bin/python
# coding=utf-8
from urllib2 import Request, urlopen, URLError, HTTPError
from multiprocessing import Pool
import os
import sys
task_list = [] ?# 任務(wù)列表
def start_run(i, task_list):
print "進(jìn)程"+str(i)+"開始"
# 處理task_list任務(wù)列表
print "進(jìn)程"+str(i)+"結(jié)束"
if __name__ == '__main__':
print 'Parent process %s.' % os.getpid()
p = Pool(number_of_processes)
for i in xrange(number_of_tasks):
i += 1 ?# 從1開始
p.apply_async(start_run, args=(i,task_list))
p.close()
p.join()
print 'All subprocesses done.'
拜謝
使用Queue作為數(shù)據(jù)管道, 在run函數(shù)中讀取并處理數(shù)據(jù);
可以考慮進(jìn)程不關(guān)閉,在進(jìn)程中讀取、處理數(shù)據(jù),做循環(huán)。
使用celery消息隊(duì)列
總結(jié)
以上是生活随笔為你收集整理的怎么让python一直执行_怎么才能让Python多进程不间断执行任务的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql的索引缺点_Sqlite数据库
- 下一篇: python语言基础练习