Python多线程(while和apscheduler)

1 投票
1 回答
2322 浏览
提问于 2025-04-17 23:31

我想在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()

撰写回答