import datetime
import multiprocessing
import os
import schedule
import time
from scrapy import cmdline
import subprocess
#
# param:
# crawlerName : xinlang or wangyi
def worker(crawlerName):
print ("开启"+crawlerName+"爬虫工作")
cmdline.execute(("scrapy crawl "+crawlerName).split())
class AutoRunAtTime:
def job(self,crawlerName): #这个是主线程把
print("正在爬取今天的新闻内容")
print('这里是进程: %sd 父进程ID:%s' % (os.getpid(), os.getppid()))
p1 = multiprocessing.Process(target=worker, args=(crawlerName,))
p1.daemon = True
p1.start()
print("The number of CPU is:" + str(multiprocessing.cpu_count()))
for p in multiprocessing.active_children():
print("child p.name:" + p.name + "\tp.id" + str(p.pid))
pid = str(p.pid)
p1.join()
def startAutoRun(self,timeSet,name): #24小时制的时间输入,传入一个时间的字符串
schedule.every().day.at(timeSet).do(self.job, name) # 应该也是24小时制的,记得 “输入24小时制的时间字符串
while True:
schedule.run_pending()
print("等待下一次...")
print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
time.sleep(1)
Я буду запускать следующий код для запуска.
def fun():
autoRun = AutoRunAtTime()
autoRun.startAutoRun("00:02")
Как я могу получить идентификатор его потока, когда я вызываю его дочерний поток с синхронизацией? Потому что я хочу использовать ID в качестве основы для других функций, чтобы завершить процесс, или есть другие способы уничтожить поток. Так что я могу остановить задачу паука.