파충류 공부노트-멀티 퀘스트

6876 단어 spider
다선파충류
  • threading
  • t1 = threading.Thread(targe=func,args=(,))
  • t1.setDaemon(True)
  • t1.start () # 이 경우에만 스레드가 시작됩니다
  • .
  • q.join()#주 스레드를 막고 주 스레드가 대기열 작업이 끝난 후에 끝날 때까지 기다립니다. 대기열 작업은 계수가 0일 때 기술
  • q.task_done()와 get() 방법의 조합, 대기열 계수 -1
  • q.put() 대기열 계수 +1

  • 다중 프로세스 파충류
  • multiprocessing
  • p = multiprocessing.Process(trage=func,args=(,))
  • p.daemon = True # 데몬으로 설정
  • p.start()

  • from multiprocessing import JoinableQueue
  • q = JoinableQueue()
  • q.join()# 주 프로세스를 차단하고 대기열 작업이 끝날 때까지 기다립니다
  • q.put()#계수+1
  • q.get()#계수는 -1
  • q.task_done () #get 및 taskdone 같이 사용해야 1 감소

  • 연못 파충류
  • from multiprocessing.dummy import Pool
  • pool.apply_async(func,callback=fun2)
  • """
       、          ?
      CPython GIL(      )   ,             ,      CPU     
         ,        ,      ,            ,         
        1.         
        2.     time.sleep()
             ,      ,      
    
       、       IO      
    """
    
    """
            :
    
    1.       。                          。
    2.       。      ,                   。
    3.          。       ,        ,         ,          ,
                  ,     
    """
    
       
    
    import threading
    from queue import Queue
    
       
    
    from multiprocessing import Process
    from multiprocessing import JoinableQueue as Queue
    
       
    
    from multiprocessing.dummy import Pool
    from queue import Queue
    
       
    
    from gevent import monkey
    monkey.patch_all()
    from gevent.pool import Pool
    
       
    
    from multiprocessing import Pool
    from multiprocessing import Manager
    Manager().Queue()
    
    

    xpath의 포함
  • //a[contains(text()," ")] 다음 페이지의 세 글자를 포함하는 a탭
  • 을 선택하십시오
  • //a[contains(@class,'n')]class에 n이 포함된 a탭
  • url 주소 디코딩 방법requests.utils.unquote(url)
    단일 모드
    __init__
    __new__
    
          ,     
    https://github.com/Python3WebSpider/ProxyPool
    
    

    단례
    import threading
    
    """
          ,  __enter__(),__exit__(),     with   
    __enter__()       as    
      with                ,        __exit__()  
    """
    
    
    # class Test():
    #
    #     def __enter__(self):
    #         print("   ")
    #         return "haha"
    #
    #     def __exit__(self, exc_type, exc_val, exc_tb):
    #         print("    ")
    
    
    # with Test() as t:
    #     print(t)
    
    class Singleton(object):
        instance = None
    
        def synchronized(func):
            func.__lock__ = threading.Lock()
    
            def synced_func(*args, **kws):
                with func.__lock__:
                    return func(*args, **kws)
    
            return synced_func
    
        @synchronized
        def __new__(cls):
            #      ,         ,           instance  
            if not cls.instance:
                cls.instance = super(Singleton, cls).__new__(cls)
            return cls.instance
    
    

    좋은 웹페이지 즐겨찾기