Python多线程(while和apscheduler)
我想在Python中同时调用两个函数。一个是无限循环,另一个是用apscheduler启动的。像这样:
Thread.py
from multiprocessing import Process
import _While
import _Scheduler
if __name__ == '__main__':
p1 = Process(target=_While.main())
p1.start()
p2 = Process(target=_Scheduler.main())
p2.start()
_While.py
import time
def main():
while True:
print "while"
time.sleep(0.5)
_Scheduler.py
import logging
from apscheduler.scheduler import Scheduler
def _scheduler():
print "scheduler"
if __name__ == '__main__':
logging.basicConfig()
scheduler = Scheduler(standalone=True)
scheduler.add_interval_job(lambda: _scheduler(), seconds=2)
scheduler.start()
因为只打印了while,看来_Scheduler没有启动。有人能帮我吗?
1 个回答
3
你这里至少有几个问题。首先,target
这个关键词应该是一个 函数,而不是一个函数的结果。例如:
p1 = Process(target=_While.main) # Note the lack of function call
其次,我没有看到任何 _Scheduler.main
函数。也许你想做的是这样的:
import logging
from apscheduler.scheduler import Scheduler
def _scheduler():
print "scheduler"
def main():
logging.basicConfig()
scheduler = Scheduler(standalone=True)
scheduler.add_interval_job(_scheduler, seconds=2) # I doubt that `lambda` is necessary here ...
scheduler.start()
if __name__ == "__main__":
main()