python執行緒 子網域名稱挖掘機例項

2021-09-27 19:31:32 字數 4211 閱讀 8300

一、_thread

例項:

import _thread

import time

#為執行緒定義乙個函式

def print_time(threadname, delay):

count = 0

while count < 5:

time.sleep(delay)

count += 1

print("%s: %s" %(threadname, time.ctime(time.time())))

#建立兩個執行緒

try:

_thread.start_new_thread(print_time, ("thread-1", 2,))

_thread.start_new_thread(print_time, ("thread-2", 4,))

except:

print("error")

while 1:

pass

二、threading

例項:

import threading

import time

class mythread (threading.thread):

def __init__(self, threadid, name, counter):

threading.thread.__init__(self)

self.threadid = threading

self.name = name

self.counter = counter

def run(self):

print("starting "+ self.name)

#獲得鎖,成功獲得鎖後返回ture

#可選的timeout引數不填時將一直阻塞直到獲得鎖定

#否則超時後將返回false

threadlock.acquire()

print_time(self.name, self.counter, 3)

#釋放鎖

threadlock.release()

def print_time(threadname, delay, counter):

while counter:

time.sleep(delay)

print("%s: %s"% (threadname, time.ctime(time.time())))

counter -= 1

threadlock = threading.lock()

threads =

#建立新執行緒

thread1 = mythread(1, "thread-1", 1)

thread2 = mythread(2, "thread-2", 2)

#開啟執行緒

thread1.start()

thread2.start()

#新增執行緒到執行緒列表

#等待所有執行緒完成

for t in threads:

t.join()

print("exiting main thread")

三、queue

例項:

import threading

import urllib.request

import time

import queue

start = time.time()

#設定最大程序數

max_queue = 2

class urlthread(threading.thread):

def __init__(self, name, counter, que):

threading.thread.__init__(self)

self.name = name

self.que = que

self.counter = counter

def run(self):

print("start " + self.name)

show(self.name, self.counter, 1)

print("exit "+self.name)

#讀佇列,timeout等待時間,從佇列中取出當前程序

self.que.get()

#在完成一項工作之後,queue.task_done()函式向任務已經完成的佇列傳送乙個訊號

self.que.task_done()

def show(name, counter, delay):

while counter:

time.sleep(delay)

print("%s:%s" %(name, time.ctime(time.time())))

counter -= 1

def main():

que = queue.queue(max_queue)

for i in range(3):

#寫入佇列

que.put(i)

thread = urlthread(i, 5, que)

thread.start()

#實際上意味著等到隊列為空,再執行別的操作

que.join()

print("over")

if __name__ == '__main__':

main()

主機網域名稱挖掘機:

import urllib.request

import threading

import time

import queue

start = time.time()

max_thread = 5

base_url = "kingcrazy.top"

open_url =

class find_thread(threading.thread):

def __init__(self, url, que):

threading.thread.__init__(self)

self.url = url

self.que = que

def run(self):

get_code(self.url)

self.que.get()

self.que.task_done()

def get_code(url):

print(url, end=":")

try:

response = urllib.request.urlopen(url)

code = response.getcode()

if code == 200:

print(200)

elif code == 302:

print(302)

except:

print(" url不存在")

def main():

print("開始查詢")

print("能夠訪問的子網域名稱")

for each in open_url:

print(each)

end = time.time()

print("總用時:%s"%(end-start))

if __name__ == '__main__':

main()

android 實現主線程 子執行緒雙向通訊

在 android 中,不可以在子執行緒中更新 ui 的操作,否則會報錯或者異常資訊。在這種情況下,我們會使用 handler 在 ui 執行緒建立該物件 接收子執行緒的訊息更新 ui.可以看出,這是子執行緒通知主線程,而主線程沒有直接通知子執行緒,那麼我們如何做到這一點?這樣有什麼好處?好處,很明...

主線程 子執行緒 通訊 最好用同步方式

從worker執行緒中顯示輸出 此刻我想先打個岔,請各位看看,如何讓 wo rker 執行緒把字串放到列表框 listbox 中。列表框的訊息迴圈總是被程式的主線程掌管,雖然這並非絕對必要,但是讓主線程負責所有的螢幕更新工作,是相當理想的。我在程式中定義了乙個訊息,名為 wm plea se upd...

WPF 多執行緒 子執行緒操作介面主線程的元素

1 在 中開啟乙個子執行緒 thread cabservice new thread new threadstart datareceiver cabservice.start 每隔2s 產生乙個資料 public void datareceiver thread.sleep 2000 2 定義 和...