我是python和编程的初学者。试图获得多线程工作,但到目前为止尚未管理。感谢任何帮助或提示。
from threading import Thread
import time
import requests
class crawler:
def get_urls(self):
while True:
#r = self.s.get('http:\\someurl')
time.sleep(1)
print 'Thread 1'
def thread_test(self):
while True:
print 'Thread 2'
time.sleep(1)
crawl = crawler()
if __name__ == '__main__':
Thread(target=crawl.get_urls()).start()
Thread(target=crawl.thread_test()).start()
答案 0 :(得分:1)
已经有一段时间了,因为我已经在python中完成了线程编程,但我记得你必须在每个线程上调用.join()
,否则主线程将在你的spawn线程有机会执行之前退出。
T1 = Thread(target=crawl.get_urls()).start()
T2 = Thread(target=crawl.thread_test()).start()
T1.join()
T2.join()
应该做的伎俩
edit
我刚看了python threading
库,问题是target
期待一个可调用的对象。当你调用target=crawl.get_urls()
时,正在评估方法而不是传递方法。
from threading import Thread
导入时间 导入请求
类抓取工具:
def get_urls(self):
while True:
#r = self.s.get('http:\\someurl')
time.sleep(1)
print 'Thread 1'
def thread_test(self):
while True:
print 'Thread 2'
time.sleep(1)
crawl = crawler()
if __name__ == '__main__':
Thread(target=crawl.get_urls).start()
Thread(target=crawl.thread_test).start()
参考:https://docs.python.org/3/library/threading.html#threading.Thread