一个后台工作程序和其他线程的基本线程

时间:2016-10-16 16:51:27

标签: python multithreading

我是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()

1 个答案:

答案 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