Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 循环并检查刷新时间是否已到。。线程是解决这个问题的方法吗?_Python_Multithreading_Web Scraping - Fatal编程技术网

Python 循环并检查刷新时间是否已到。。线程是解决这个问题的方法吗?

Python 循环并检查刷新时间是否已到。。线程是解决这个问题的方法吗?,python,multithreading,web-scraping,Python,Multithreading,Web Scraping,我有一个循环,一次又一次地浏览30个链接,大约每10个小时左右,所以我更喜欢清除保存某些已找到数据的其他列表。这里有一个抽象的例子。如果我有时间在一个单独的线程刷新 def check_refresh(time_since_refresh): time_difference = round((datime.now() - time_since_refresh).total_seconds()/60/60) if time_difference == CLEAR_F

我有一个循环,一次又一次地浏览30个链接,大约每10个小时左右,所以我更喜欢清除保存某些已找到数据的其他列表。这里有一个抽象的例子。如果我有时间在一个单独的线程刷新

def check_refresh(time_since_refresh):
        time_difference = round((datime.now() - time_since_refresh).total_seconds()/60/60)
        if time_difference == CLEAR_FOUND:
            time_since_refresh = datetime.now()
            return True
        return False


问题是,刮削的速度对我来说很重要,所以如果它通过每个循环检查是否是刷新的时间,我觉得它会减慢速度。
刷新的时间应该是一个单独的线程,并且有一个布尔标志,刮板将读取每个循环?
还有没有更好的方法来实现自循环开始以来经过了多少时间,而无需使用
check\u refresh

是的,线程是一个更好的主意。试试这个:

def check_refresh(time_since_refresh):
        time_difference = round((datime.now() - 
                time_since_refresh).total_seconds()/60/60)
        if time_difference == CLEAR_FOUND:
            time_since_refresh = datetime.now()
            return True
        return False

t = threading.Thread(target=check_refresh)
while True:
  scrape(url)
  if t:
     temporary_list.clear()
线程化之所以更好,是因为一个线程在执行另一个代码时执行某些操作,而不是暂停当前正在执行的代码。希望这有帮助

def check_refresh(time_since_refresh):
        time_difference = round((datime.now() - 
                time_since_refresh).total_seconds()/60/60)
        if time_difference == CLEAR_FOUND:
            time_since_refresh = datetime.now()
            return True
        return False

t = threading.Thread(target=check_refresh)
while True:
  scrape(url)
  if t:
     temporary_list.clear()