我通过apscheduler
安排了工作。到目前为止,我有3个工作岗位,但很快就会有更多工作岗位。我正在寻找一种扩展代码的方法。
目前,每个作业都是自己的.py
文件,在文件中,我已将脚本转换为函数名为run()
的函数。这是我的代码。
from apscheduler.scheduler import Scheduler
import logging
import job1
import job2
import job3
logging.basicConfig()
sched = Scheduler()
@sched.cron_schedule(day_of_week='mon-sun', hour=7)
def runjobs():
job1.run()
job2.run()
job3.run()
sched.start()
这是有效的,现在代码只是愚蠢,但它完成了工作。但是当我有50个工作时,代码将是愚蠢的。我该如何缩放它?
注意:作业的实际名称是任意的,并不遵循模式。该文件的名称是scheduler.py
,我在python shell中使用execfile('scheduler.py')
运行它。
答案 0 :(得分:5)
import urllib
import threading
import datetime
pages = ['http://google.com', 'http://yahoo.com', 'http://msn.com']
#------------------------------------------------------------------------------
# Getting the pages WITHOUT threads
#------------------------------------------------------------------------------
def job(url):
response = urllib.urlopen(url)
html = response.read()
def runjobs():
for page in pages:
job(page)
start = datetime.datetime.now()
runjobs()
end = datetime.datetime.now()
print "jobs run in {} microseconds WITHOUT threads" \
.format((end - start).microseconds)
#------------------------------------------------------------------------------
# Getting the pages WITH threads
#------------------------------------------------------------------------------
def job(url):
response = urllib.urlopen(url)
html = response.read()
def runjobs():
threads = []
for page in pages:
t = threading.Thread(target=job, args=(page,))
t.start()
threads.append(t)
for t in threads:
t.join()
start = datetime.datetime.now()
runjobs()
end = datetime.datetime.now()
print "jobs run in {} microsecond WITH threads" \
.format((end - start).microseconds)
答案 1 :(得分:1)
看看@
http://furius.ca/pubcode/pub/conf/bin/python-recursive-import-test
这将帮助您导入所有python / .py文件。
导入时可以创建一个保持函数调用的列表,例如。
[job1.run(),job2.run()]
然后遍历它们并调用函数:)
感谢Arjun