多线程python(使用_thread),什么都不做

时间:2014-07-30 23:42:32

标签: python multithreading python-3.x python-multithreading

首先,这是我的两个python文件:

sred.py:

import _thread,time

class Thread:

def __init__(self,time:int,say:str):

    self.time=time
    self.say=say


def create():
    id = _thread.get_ident() 


    for i in range(5):

        print("HALLO", id)

    return

from sred import Thread
import time,_thread

_thread.start_new_thread(Thread.create,())

第二个: main.py

from sred import Thread
import time,_thread

_thread.start_new_thread(Thread.create,())

执行此操作时,它不打印任何内容,为什么?

更新:

import _thread

class Thread:


    @classmethod
    def create():
        id = _thread.get_ident() 


        for i in range(5):
            print("HALLO", id)
        return

main.py:

from sred import Thread
import time,_thread

_thread.start_new_thread(Thread().create,())

现在这是对的吗,还是还有问题?

1 个答案:

答案 0 :(得分:1)

create方法缺少self作为参数 - 如果您想现在调用它,它看起来也应该是@classmethod。请注意,永远不会调用__init__方法,因为您永远不会实例化任何Thread个对象。您可能希望它阅读:

_thread.start_new_thread(Thread().create, ())

即,实例化一个线程,然后传递它的create方法在新线程中执行。我不确定发生了什么,但我怀疑某些事情是错误的,而stacktrace is being suppressed则是某种错误。

此外,您需要删除for语句后的空格 - 它很重要,它应该会给您一个关于意外缩进的语法错误。

编辑:

此版本在我的机器上运行:

import _thread

class Thread:
    def create(self):
        id = _thread.get_ident() 

        for i in range(5):
            print("HALLO", id)
        return

_thread.start_new_thread(Thread().create, ())