Как я могу получить идентификатор потока нереализованного subThread, который является задачей расписания в основном потоке? - PullRequest
0 голосов
/ 12 марта 2020
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 в качестве основы для других функций, чтобы завершить процесс, или есть другие способы уничтожить поток. Так что я могу остановить задачу паука.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...