Heim > Artikel > Backend-Entwicklung > Ausführliche Erläuterung zur Verwendung von Semaphoren in Python3.X-Threads
Das Semaphor ist eine Variable, die den Zugriff auf öffentliche Ressourcen oder kritische Abschnitte steuert. Das Semaphor verwaltet einen Zähler, der die Anzahl der Threads angibt, die gleichzeitig auf die Ressource zugreifen oder den kritischen Abschnitt betreten können. Der folgende Artikel führt Sie hauptsächlich in die Verwendung von Semaphoren in Python3.X-Threads ein. Lassen Sie uns gemeinsam einen Blick darauf werfen.
Vorwort
Ich habe kürzlich Python gelernt und festgestellt, dass das Verständnis der Grundkenntnisse von Thread-Semaphoren beim Verständnis von Python-Threads eine große Hilfe sein wird ausführlich. In diesem Artikel erfahren Sie, wie Sie Semaphoren in Python3 verwenden. >
In Threads werden Semaphoren hauptsächlich zur Aufrechterhaltung begrenzter Ressourcen verwendet, sodass nur eine bestimmte Anzahl von Threads die Ressource zu einem bestimmten Zeitpunkt verwenden kann
Es ist festzustellen, dass in diesem Programm immer nur 2 Crawler aktiv sind
# -*- coding:utf-8 -*- """ Created by FizLin on 2017/07/23/-下午10:59 mail: https://github.com/Fiz1994 信号量 maxconnections = 5 ... pool_sema = BoundedSemaphore(value=maxconnections) Once spawned, worker threads call the semaphore's acquire and release methods when they need to connect to the server: pool_sema.acquire() conn = connectdb() ... use connection ... conn.close() pool_sema.release() """ import threading import time import random sites = ["https://www.baidu.com/", "https://github.com/Fiz1994", "https://stackoverflow.com/", "https://www.sogou.com/", "http://english.sogou.com/?b_o_e=1&ie=utf8&fr=common_index_nav&query="] * 20 sites_index = 0 maxconnections = 2 pool_sema = threading.BoundedSemaphore(value=maxconnections) def test(): with pool_sema: global sites_index, sites url = str(sites[sites_index]) k = random.randint(10, 20) print("爬去: " + url + " 需要时间 : " + str(k)) sites_index += 1 # print(url) time.sleep(k) print('退出 ', url) for i in range(100): threading.Thread(target=test).start()
Zusammenfassung
Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung zur Verwendung von Semaphoren in Python3.X-Threads. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!